I am sending e-mail using php mailer. But if the sender is yahoo email address then it's not sending the email. why ?
I am using following code :
require 'PHPMailerAutoload.php';
$mail = new PHPMailer(true);
try {
//Set who the message is to be sent from
$mail->setFrom("$email", "$name"); // yahoo mail address
//Set an alternative reply-to address
//$mail->addReplyTo('replyto@example.com', "$name");
//Set who the message is to be sent to
$mail->addAddress('receiver email adddress', 'Name');
//Set the subject line
$mail->Subject = "$subject";
//Read an HTML message body from an external file, convert referenced images to embedded,
//and convert the HTML into a basic plain-text alternative body
$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
//Replace the plain text body with one created manually
$mail->AltBody = 'This is a plain-text message body';
//Attach an image file
//$mail->addAttachment('images/phpmailer_mini.png');
//send the message
//Note that we don't need check the response from this because it will throw an exception if it has trouble
$mail->send();
echo "Message sent! = $email";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
As it stands you're sending using mail()
(PHPMailer's default behaviour) via your own local mail server, which is not Yahoo.
If you're sending from a Yahoo address, but are not sending through a yahoo server, your messages will fail SPF checks since Yahoo has a very strict policy.
So you need to either call isSMTP()
and set Host
to a yahoo SMTP server (and set up appropriate auth, base your code on the gmail example provided with PHPMailer as it's very similar), or change your from address to one that reflects the server you're really sending from, or whose SPF record allows your server to be a mail source.