【问题标题】:PEAR: Mail Mime - Can't send email after uploading to hosting site - GoDaddyPEAR:Mail Mime - 上传到托管站点后无法发送电子邮件 - GoDaddy
【发布时间】:2017-03-16 12:55:48
【问题描述】:

我一直在创建这个项目,系统接受注册,然后通过邮件将信息发送给所有者。我正在使用 PEAR: Mail Mime 来执行此操作。发送邮件实际上是在我的本地计算机上进行的,但是在将此项目上传到托管站点 (GoDaddy) 后,它不再发送了。

我做了一个错误检查,看看是什么阻碍了邮件的发送,我收到了这条消息:

无法连接到 ssl://smtp.gmail.com:465 [SMTP:无法连接套接字:连接被拒绝(代码:-1,响应:)]

我正在使用 GMail 帐户发送电子邮件,并使用此代码:

/* INCLUDE PREREQUISITES IN ORDER TO SEND AN EMAIL */
include('../../application/third_party/Mail-1.3.0/Mail-1.3.0/Mail.php');
require_once '../../application/third_party/Mail_Mime-1.10.0/Mail_Mime-1.10.0/Mail/mime.php';

/* HEADER INFORMATION */
$from = '<***@gmail.com>';
$to = '<***@gmail.com>';
$subject = 'Someone registers';
$crlf = "\r\n";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

// CREATING THE MIME MESSAGE
$mime = new Mail_mime($crlf);

$html = '
    <html>
        <body>
            Message here
        </body>
    </html>';

// SETTING THE BODY OF THE EMAIL TO HTML
$mime->setHTMLBody($html);

$body = $mime->get();
$headers = $mime->headers($headers);

// SENDER INFORMATION
$smtp = Mail::factory('smtp', array(
    'host' => 'ssl://smtp.gmail.com',
    'port' => '465',
    'auth' => true,
    'username' => '***@gmail.com',
    'password' => '***'
));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    $errormessage = '<p>'.$mail->getMessage().'</p>'; // ERROR MESSAGE
    $mail->getUserInfo();
}

是的,我打开了 GMail 发件人帐户的Access for less secure apps

是的,错误显示已打开。

ini_set('display_errors', 1); 
error_reporting(E_ALL);

任何我可能错过的解决方案?

【问题讨论】:

    标签: php hosting pear mail-mime


    【解决方案1】:

    在此 - Sending email through gmail SMTP on GoDaddy 中找到有关外发邮件的答案。

    这是因为托管服务提供商 GoDaddy 限制了 GMail 的 SSL 端口 (465) 以及 25 和 587 等其他端口。感谢 GitHub 的这篇文章 -Troubleshooting PHPMailer Problems - 进行了清理。用户只能使用 GoDaddy 的邮件服务器。

    但我仍然设法通过以下方式使用 GMail 发送电子邮件:

    $smtp = Mail::factory('smtp');
    /* SETTINGS WILL BE IN DEFAULT (E.G. HOST:LOCALHOST, PORT: 45) */
    

    而不是

    $smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => '***@gmail.com',
        'password' => '***'
    ));
    

    但是接收者将发送的电子邮件作为“垃圾邮件”接收 - 结果将是接收者不会注意到来自系统的传入电子邮件(不是一个好的选择)。并且发件人的已发送项目中没有记录(意味着您“使用”电子邮件发送电子邮件,但不完全)。

    所以,我们又回到了 GoDaddy 的邮件服务器。首先,您必须通过查看这个由 GoDaddy 自己发布的What is the name of my hosting account's relay server? 来确定您的主机帐户的中继服务器。就我而言,Linux (cPanel),我将使用 localhost 作为我的主机。

    $smtp = Mail::factory('smtp', array(
        'host' => 'localhost',
        'auth' => true,
        'username' => '***@***.com',
        'password' => '***'
    ));
    

    但奇怪的是,仍然没有发送物品的记录。希望 GoDaddy 代表阅读此内容。

    【讨论】:

      猜你喜欢
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多