Hello,
Is there a way to send smtp mail without messing with php.ini file? A lot of server don't seem to give access to that. Thanks in advance.

You can use the php_flag option in a .htaccess file.

This is only if the server allows this option.

Do a google search on php_flag

Hello,
Is there a way to send smtp mail without messing with php.ini file? A lot of server don't seem to give access to that. Thanks in advance.

You can use a PHP mailing library such as SwiftMailer, http://www.swiftmailer.org/.

http://www.swiftmailer.org/wikidocs/v3/smtpauth

Here is an example of sending email to SMTP server via telnet:
http://www.yuki-onna.co.uk/email/smtp.html

You can do the same with PHP using a function such as fsockopen, fopen etc.

eg:

$fp = fsockopen('mail.example.com', 25);
if ($fp) {

// send you smtp command
fputs($fp, 'SMTP command goes here... ');
// make sure it worked
fgets($fp);

// send more smtp commands... etc. 

// close the tcp connection
fclose($fp);
}

Thanks for all your responses. My goal is to write websites which are portable. Unfortunately some server don't allow the flag option and few horrible servers don't allow telnet access. Swiftmail looks promising. I will check it out. Hopefully the installation will not require me change anything in the php.ini files.

Thanks for all your responses. My goal is to write websites which are portable. Unfortunately some server don't allow the flag option and few horrible servers don't allow telnet access. Swiftmail looks promising. I will check it out. Hopefully the installation will not require me change anything in the php.ini files.

I think the most support you'd get for sending mail via PHP in production environments is to connect directly to the SMTP server via TCP. This would depend solely on the allow_url_fopen configuration in PHP.ini. This is most likely enabled on any production PHP server.
If it isn't, you could resort to CURL, which would be the alternative given by the hosting if they have turned off allow_url_fopen for some reason.

If you want secure mail transfer, then you'd need to have OpenSSL installed so your TCP connection can be done over TLS or SSL. Some SMTP server may not allow plain-text transfer, which makes TLS support a requirement.

This article has been dead for over six months. Start a new discussion instead.