从yii发送邮件

时间:2011-12-14 07:35:16

标签: yii yii-components

public function mailsend($name, $contact_no, $email,$website,$content,$subject,$address ) 
{
    $message        = new YiiMailMessage;
    $message->view  = 'viewfilenm';
    $message->setBody(array(), 'text/html');
    $body           = $message->message->getBody();
    /******  preg_replace :Perform a regular expression search and replace ******/
    $body           = preg_replace('/\[FNAME]/',$name,$body); 
    $body           = preg_replace('/\[CONTENT]/',$content,$body);
    $find           = array("[CONTACT_NO]"=>$contact_no,"[FNAME]"=>$name,"[EMAIL]"=>$email,"[ADDRESS]"=>$address);
    /****** strtr :Translate characters or replace substrings ******/
    $newstr         = strtr($content, $find);
    $body           = str_replace($content,$newstr,$body);
    $body           = preg_replace('/\[CONTACT_NO]/',$contact_no,$body);
    $body           = preg_replace('/\[EMAIL]/',$email,$body);
    $body           = preg_replace('/\[SUBJECT]/',$subject,$body);
    $body           = preg_replace('/\[WEBSITE]/',$website,$body);
    $message->message->setBody($body, 'text/html');
    $message->subject = $subject;
    $message->addTo($email);
    $message->from   = ('abc@abc.com');
    Yii::app()->mail->send($message);
}

$message->addTo()如果我传递了我的gmail ID,那么在gmail中我收到了邮件。 但如果我在$message->addTo()传递我的雅虎或其他身份证,那么我就不会收到邮件,也不会显示任何错误。

1 个答案:

答案 0 :(得分:2)

如果电子邮件已发送到某些地址而非其他地址,则可能与您的代码无关。这可能是你的服务器。

电子邮件递送很复杂。几乎每个端点(Gmail,Yahoo等)都有不同的垃圾邮件规则。您将面临的最大问题是将您发送的IP地址识别为“安全”。

我有幸使用已建立的SMTP服务器(如Gmail)作为我在Yii的发送代理发送电子邮件。

以下是关于可传递性的一些其他资源:

http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code.html http://www.engineyard.com/blog/2009/how-to-ensure-your-email-gets-delivered/