Dav
Dav

Reputation: 150

PHP mail() function replacement?

When I change providers I always have to make sendmail work and it's a real drag.

Are there any free providers I can use within my PHP code to send the same variables like keycodes for registration verification and stuff?

I tried looking on Google but I only found stuff that had form generators, which is not what I need.

Upvotes: 3

Views: 2105

Answers (4)

Michiel Thalen
Michiel Thalen

Reputation: 300

The problem is that a lot of ISPs block connections on port 25 (default smtp) to servers other than their own. Has to do with spam blocking etc.

Upvotes: 1

Orentet
Orentet

Reputation: 2363

I use PHPMailer with great success.

Upvotes: 6

fire
fire

Reputation: 21531

What you need is an outgoing authenticated SMTP server so your not using the hosts one and don't have to change the details each time.

Take a look at AuthSMTP (there are lots of other websites that provide this) and then use something like PHPMailer or Swift Mailer to send the email with authentication.

Upvotes: 1

Maher4Ever
Maher4Ever

Reputation: 1280

Right now Swift Mailer is one of the best mail solutions around for PHP. It's highly modular and can easily be configured to suit your needs. You could define multiple transports (in a config file for example) and use the one you need when you change providers.

Here is an example from the docs:

require_once 'lib/swift_required.php';

// Create the Transport
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
  ->setUsername('your username')
  ->setPassword('your password')
  ;

/*
You could alternatively use a different transport such as Sendmail or Mail:

// Sendmail
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');

// Mail
$transport = Swift_MailTransport::newInstance();
*/

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('[email protected]' => 'John Doe'))
  ->setTo(array('[email protected]', '[email protected]' => 'A name'))
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);

Upvotes: 3

Related Questions