user2338456
user2338456

Reputation: 520

phpmailer not sending email to gmail,yahoo,hotmail or these are blocking email sent by phpmailer

i am using PHPmailer to send emails

here is code that i have used:

        $mail = new PHPMailer(); 

        $subject = "test";
        $to = "[email protected]"
        $mail->SetFrom("[email protected]","Punjab Dental Society");
        $mail->AddReplyTo("[email protected]", "Punjab Dental Society");
        $mail->Subject = $subject;
        $mail->MsgHTML($str);
        $mail->AddAddress($to, "Punjab Dental Society");    
        if(!$mail->Send()) 
        {
          $err = "Mailer Error: " . $mail->ErrorInfo;
          //echo $err;
        } else {
          $msg = "Message sent!";
        }
        // Clear all addresses and attachments for next loop
        $mail->ClearAddresses(); 

if i change email address from yahoo to gmail or hotmail, still email are not sent.

i checked by echoing error, but no errors.

can anyone explain what is the issue ?

Upvotes: 1

Views: 13684

Answers (4)

user2338456
user2338456

Reputation: 520

After trying various ways, i found following code working with almost all email providers

$to['email'] = "recipients email address";      
$to['name'] = "name";   
$subject = "email subject";
$str = "<p>Hello, World</p>";
$mail = new PHPMailer;
$mail->IsSMTP();                                     
$mail->SMTPAuth = true;
$mail->Host = 'Specify main and backup server here';
$mail->Port = 465;
$mail->Username = '[email protected]';
$mail->Password = 'email account password';
$mail->SMTPSecure = 'ssl';
$mail->From = 'From Email Address';
$mail->FromName = "Any Name";
$mail->AddReplyTo('[email protected]', 'any name'); 
$mail->AddAddress($to['email'],$to['name']);
$mail->Priority = 1;
$mail->AddCustomHeader("X-MSMail-Priority: High");
$mail->WordWrap = 50;    
$mail->IsHTML(true);  
$mail->Subject = $subject;
$mail->Body    = $str;
if(!$mail->Send()) {
$err = 'Message could not be sent.';
$err .= 'Mailer Error: ' . $mail->ErrorInfo;                        
}

$mail->ClearAddresses();

variable values needs to be changed accordingly. Hope these helps people having issues with PHPmailer

Upvotes: 4

Synchro
Synchro

Reputation: 37810

PHPMailer is only involved in submitting the message to your own mail server, and you're not having any problem there. After that, your mail server takes on the responsibility of sending it on, so you will find the answer in your mail server's logs.

There is no simple way to ensure messages end up in the inbox and not spam - if there was, spammers would be using it and filtering would be useless. Make sure your DNS resolves backwards and forwards, that you have valid SPF records, that you sign your messages with DKIM (especially important for Yahoo) and most importantly, that you don't send messages that your recipients think are spam.

Upvotes: 1

RasmusLK
RasmusLK

Reputation: 11

Have you looked on the post here: Using PHPMailer Results in many blocked emails? The asker solved the issue by changing the email subject:

Well I solved the issue; the code above was not the problem and works great.

In my subject, I used a phrase regarding "verify your account information" and that got it blocked on a few ISP's.

So the lesson is, your subject matters. I was looking at my php code and my body content before I realized this.

The content of the email and its subject can make ISPs ban it. You could try taking the content of one of your received emails from your inbox and see if that goes through.

Upvotes: -1

Happy Coding
Happy Coding

Reputation: 2525

Try this :

$mail = new PHPMailer(true);      // the true param means it will throw exceptions on errors, which we need to catch

        $mail->IsSMTP();            // telling the class to use SMTP
        try {
            $mail->AddAddress($to['email'],$to['name']);
            $mail->FromName = '';

            $mail->Subject = $subject;
            $mail->MsgHTML($message);


            $send = true;
            return $mail->Send();

        } catch (phpmailerException $e) {
        echo    $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
            $e->getMessage(); //Boring error messages from anything else!
        }

It will help you if any exception error.

Upvotes: 0

Related Questions