phpMailer不会向hotmail帐户发送电子邮件

时间:2014-05-28 16:42:31

标签: php email phpmailer hotmail

我正在使用PHPMailer发送电子邮件。我正在尝试向Hotmail帐户发送电子邮件,但如果收件人在联系人中有发件人,则会收到该电子邮件。如果收件人在联系人中没有发件人,则不会收到该电子邮件。

为什么呢?怎么了?

PHPMailer不会显示任何错误。

我在网络上尝试了很多解决方案而没有任何结果。

这是我使用的代码:

public static function invia_email_bis($p_nome_mitt, $p_mitt, $p_dest, $p_ccn, $p_oggetto, $p_header, $p_mess) {

    //Se siamo in sviluppo, le email non devono partire. L'ambiente lo rileviamo dal DB
    $config =& JFactory::getConfig();
    if ($config->getValue( 'config.db' ) == 'fantaonl_dev') {
        return;
    }

    $email_par = email::get_parameter(costanti::actaccount);

    //Creazione dell'oggetto PHPMAILER
    $messaggio = new PHPmailer();

    //Abilitiamo SMTP
    $messaggio->IsSMTP();

    //Abilitiamo l'autenticazione
    $messaggio->SMTPAuth = true;  

    //Abilitiamo il protocollo SSL 
    if ( $email_par['PORTA'] == 587 ) {         
        $messaggio->SMTPSecure = "tls";
    }

    if ( $email_par['PORTA'] == 465 ) {         
        $messaggio->SMTPSecure = "ssl";
    }

    //Server SMTP
    $messaggio->Host = $email_par['SMTP'];      
    $messaggio->Username = $email_par['USERNAME'];
    $messaggio->Password = $email_par['PASSWORD'];

    //Porta 
    $messaggio->Port = $email_par['PORTA'];

    //Definiamo le intestazioni e il corpo del messaggio
    $messaggio->FromName = $p_nome_mitt;
    $messaggio->From = $p_mitt;

    //$messaggio->SMTPDebug  = 1;
    //$messaggio->Debugoutput = 'html';

    //DESTINATARIO
    if ($p_ccn == false) {      
        for ($t = 0; $t < count($p_dest); $t++) {
            if ($p_dest[$t]['EMAIL'] != '') { $messaggio->AddAddress($p_dest[$t]['EMAIL']); }
            elseif ($p_dest[$t]['email'] != '') { $messaggio->AddAddress($p_dest[$t]['email']); }
        }
    }
    else {
        for ($t = 0; $t < count($p_dest); $t++) {
            if ($p_dest[$t]['EMAIL'] != '') { $messaggio->AddBCC($p_dest[$t]['EMAIL']); }
            elseif ($p_dest[$t]['email'] != '') { $messaggio->AddBCC($p_dest[$t]['email']); }
            }
    }



    //DESTINATARIO IN CCN
    //$mail->AddBCC($p_dest);

    //MITTENTE
    $messaggio->AddReplyTo($p_mitt, $p_nome_mitt); 

    //OGGETTO MESSAGGIO
    $messaggio->Subject=$p_oggetto;

    //Il Messaggio Ë in HTML
    $messaggio->IsHTML(true);                               
    $path_html = $_SERVER['DOCUMENT_ROOT'] . '/jumi_includes/class/template_email.html';
    $message_body = file_get_contents($path_html);

    $message_body = str_replace('%titolo%', $p_header, $message_body);      
    $message_body = str_replace('%messaggio%', $p_mess, $message_body);


    $path_img = $_SERVER['DOCUMENT_ROOT'] . '/templates/sitodefinitivodue/images/header.jpg';
    //Path immagine da caricare
    $messaggio->AddEmbeddedImage($path_img, 'header', 'header.jpg', 'base64', 'image/jpeg');                

    //CORPO MESSAGGIO       
    $messaggio->MsgHTML($message_body);
    $messaggio->AltBody = $p_mess;


    //Definiamo i comportamenti in caso di invio corretto 
    //o di errore
    if(!$messaggio->Send()){ 
        $esito =  4;
        //echo $messaggio->ErrorInfo;
    }else{ 
        $esito = 0;
    }

    //chiudiamo la connessione
    $messaggio->SmtpClose();
    unset($messaggio);
    return $esito;
}

2 个答案:

答案 0 :(得分:3)

这是垃圾邮件的垃圾邮件过滤器。现在你不能只是开始发送电子邮件并认为它会一路走来。 要躲避hotmails / gmails垃圾邮件过滤器,您必须:

  • 对2003年美国的反垃圾邮件法案的谴责包括:

    • 切勿使用欺骗性标题,名称,回复标题或主题行。
    • 您必须始终提供取消订阅链接。
    • 在10个工作日内从列表中删除收件人。
    • 取消订阅链接在发送后必须至少工作30天。
    • 您必须包含您的实际邮寄地址。要了解更多信息,请访问ftc.gov。
  • 从正确的服务器发送,如果您使用的SMTP服务器没有任何与您正在使用的域名的内容将被阻止。如果你发送no-reply@test.com并且没有使用正确的smtp它将被阻止,如果你继续你的smtp服务器可以列入黑名单,如果你使用ISP或任何其他服务器他们不会对此感到高兴。

  • 不是“垃圾邮件”,垃圾邮件过滤器现在会分析文本,并试图弄清楚您的邮件是否是垃圾邮件。如果您通过简单的文本更改发送大量相同的按摩,您的邮件将获得更高的分数。喜欢:你好[迈克],看看我们的新产品等等。避免使用像e点击这里的常见垃圾词!或免费!立即购买!等等或鲜艳的颜色,大量的惊叹,vad html等。

如果您的收件箱很快就会被垃圾邮件填满,那么就没有避免垃圾邮件过滤器的方法。

Will Weatons规则适用于此(与SEO一样):不要成为一个家伙。

答案 1 :(得分:0)

我认为您的电子邮件已发送给hotmail用户。 要正确发送到hotmail,请务必使用DKIM。 我怀疑这是DKIM问题。 在Hotmail的安全发件人中,如果发件人域名不在安全列表中,则会自动忽略该电子邮件。

尝试检查: - 收件箱&gt;选项&gt;安全和阻止的发件人&gt;安全发件人