【问题标题】:Phpmailer not sending email on same domainPhpmailer 不在同一域上发送电子邮件
【发布时间】:2017-07-04 01:11:32
【问题描述】:

我有一个网站,并且有一个联系表。我的代码如下:

$name = $_POST['name'];
$email = $_POST['email'];

$mail = new PHPMailer(true);

if (!$mail->addAddress('email@domain.com','email')) {
  die('Invalid email address');
}
$mail->isSMTP();
//$mail->SMTPAuth = true;
$mail->SMTPDebug = 2;
$mail->Host = 'localhost';
$mail->Subject = 'Subject';
$text = 'A mail...';
$mail->MsgHTML($text);
$mail->SetFrom($email);
//$mail->AddReplyTo($email,$name);

if ($mail->Send()){

如果用户输入他/她的邮件地址,如“address@gmail.com”或“add@hotmail.com”,它会向该地址发送电子邮件。但如果我输入 my@mydomain.com,它会显示消息发送,但邮件没有到达。我正在寻找 2 天,但找不到合适的解决方案。我也试过这个:

我写了 $mail->addAddress('mybackupmail@gmail.com','email'),并将收到的邮件转发到 mybackupmail@gmail.com 到 'mydomain@domain.com'。它也没有发送。我几乎尝试了一切。我的 mx 记录如下:

我是否应该更改这些设置?还是其他问题?

我将非常感谢任何帮助。

感谢您的关注,

【问题讨论】:

  • yilmaz 检查邮件服务器的日志

标签: php email phpmailer


【解决方案1】:

您是否正在使用 godaddy 的 cpanel 托管?我不知道这是“无处不在的cpanel”,还是只是在godaddy,但是进入您的cpanel并寻找一个名为“MX Entry”的东西,然后将其从本地更改为远程。本地告诉服务器“我们是这个域的邮件引擎,我们在这个 cpanel 中拥有”,远程告诉它“这个域的电子邮件在 cpanel 之外处理”......你的 MX 记录告诉我你正在使用工作区电子邮件,因此您需要 MX 进入远程 :)

【讨论】:

    【解决方案2】:

    使用phpmailer发送邮件的函数示例

    你只是改变路径包含

    改变参数

    function send_email($to, $subject, $message, $html = TRUE)
    {
        require_once APPPATH .'libraries/phpmailer/PHPMailerAutoload.php';
    
        $mail                   = new PHPMailer;
    
        $mail->isSMTP();
    
        $mail->SMTPDebug        = 0;
        $mail->Debugoutput      = 'html';
    
        $mail->Host             = 'smtp.gmail.com';
        $mail->SMTPAuth         = true;
        $mail->Username         = 'email@gmail.com';
        $mail->Password         = 'password';
        $mail->SMTPSecure       = 'tls';
        $mail->Port             = 587;
    
        $mail->isHTML($html);
        $mail->charSet          = 'UTF-8';
    
    
        $from = 'domain@gmail.com';
    
        $mail->setFrom($from, 'no-reply');
        $mail->addAddress($to, 'Information');
    
        $mail->Subject          = '=?UTF-8?B?'.base64_encode($subject).'?=';
        $mail->Body             = $message;
        $mail->AltBody          = '';
    
        if($mail->send())
        {
            return TRUE;
        }
    
        return FALSE;
    }
    

    或样本:This example shows sending a message using PHP's mail() function

    【讨论】:

    • 感谢您的评论,但我不使用 gmail smtp,我使用的是 Godaddy 托管和他们的电子邮件服务器。
    • 是的,你改变了 phpmailer 的参数(主机、SMTPSecure、端口、用户名、密码...)
    • 我的代码已经是一个工作代码,所以我需要一些关于为什么我不能在同一个域地址上发送电子邮件的想法。
    • set $mail->SMTPDebug = 3; 启用详细调试输出
    • 回答我更新。点击链接示例 mail() 与 phpmailer
    猜你喜欢
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-19
    • 2021-01-03
    • 2014-07-04
    • 1970-01-01
    相关资源
    最近更新 更多