我正在使用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;
}
答案 0 :(得分:3)
这是垃圾邮件的垃圾邮件过滤器。现在你不能只是开始发送电子邮件并认为它会一路走来。 要躲避hotmails / gmails垃圾邮件过滤器,您必须:
对2003年美国的反垃圾邮件法案的谴责包括:
从正确的服务器发送,如果您使用的SMTP服务器没有任何与您正在使用的域名的内容将被阻止。如果你发送no-reply@test.com并且没有使用正确的smtp它将被阻止,如果你继续你的smtp服务器可以列入黑名单,如果你使用ISP或任何其他服务器他们不会对此感到高兴。
不是“垃圾邮件”,垃圾邮件过滤器现在会分析文本,并试图弄清楚您的邮件是否是垃圾邮件。如果您通过简单的文本更改发送大量相同的按摩,您的邮件将获得更高的分数。喜欢:你好[迈克],看看我们的新产品等等。避免使用像e点击这里的常见垃圾词!或免费!立即购买!等等或鲜艳的颜色,大量的惊叹,vad html等。
如果您的收件箱很快就会被垃圾邮件填满,那么就没有避免垃圾邮件过滤器的方法。
Will Weatons规则适用于此(与SEO一样):不要成为一个家伙。
答案 1 :(得分:0)
我认为您的电子邮件已发送给hotmail用户。 要正确发送到hotmail,请务必使用DKIM。 我怀疑这是DKIM问题。 在Hotmail的安全发件人中,如果发件人域名不在安全列表中,则会自动忽略该电子邮件。
尝试检查: - 收件箱&gt;选项&gt;安全和阻止的发件人&gt;安全发件人