PHPMailer无法在我的服务器上运行

时间:2015-12-04 09:04:53

标签: php email ubuntu phpmailer sendmail

我使用带有DigitalOcean的Ubuntu构建了一个Droplet,我正在尝试将其配置为使用SMTP发送电子邮件。

我知道DigitalOcean通过IPv6阻止SMTP而不是IPv4,因此我将IPv6禁用为this post says

我的脚本仍无效。我尝试过端口25,465和587. TLS和SSL。

我为Ubuntu 14.04安装了sendmail但没有工作。

这是我的剧本:

<?php
    require 'mail/PHPMailerAutoload.php';

    $mail = new PHPMailer;

    $to = $_GET['email'];

    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'rafawins@gmail.com';
    $mail->Password = '***';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    $mail->setFrom('rafawins@gmail.com', 'Rafael');

    $mail->addAddress($to);

    $mail->isHTML(true);

    $mail->Subject = 'Subject';
    $contents = ob_get_contents();
    $mail->Body    = "ao!";

    if(!$mail->send()) {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message has been sent';
    }
    print_r(error_get_last());


?>

提出的错误是:

  

SMTP connect()失败。

我有兴趣发送电子邮件使用SMTP ,因此需要->isSMTP()

我哪里错了?

非常感谢。

修改

做:telnet smtp.gmail.com 587 我明白了:

  

尝试74.125.133.108 ......

     

已连接到gmail-smtp-msa.l.google.com。

     

逃脱角色是'^]'。

     

220 smtp.gmail.com ESMTP w6sm13897014wjy.31 - gsmtp

并且正在做:openssl s_client -connect smtp.gmail.com:465我也得到了答案......

怎么了?

3 个答案:

答案 0 :(得分:1)

谨防使用其他设备上的Gmail。谷歌不允许并立即阻止从不使用帐户的地方(在google of course眼中)。

答案 1 :(得分:0)

在使用SMTP发送邮件的实时服务器上,执行此操作。

    while( $text =~ /
            (?m)            # multiline match
            ^               # at the start of the line
            ([ ]{2}|\t)+    # two spaces or tab - at least once
            \+              # the '+' character
            \s*             # followed by any number of spaces (e.g. "+VAR" or "+    VAR" are valid)
            (VAR|CONST)     # the VAR or CONST
            \s+             # followed at least one space (e.g. the "VAR_" should not matched)
            (\w+)           # the keyword
            \s*=\s*         # the '=' surrounded (and consumed) by any number of spaces
            (               # capture the whole value (as it is)
                    .*                      # any string up to end of line
                    (?:                     # followed by (non-capturing group)
                            \R              # one line-break
                            ^               # at the start of the line
                            (?>[ ]{2,}|\t+) # atomic group - at least two spaces or at least one tab
                            [^+]            # followed by any character but '+'
                            .*              # any string up the end of line
                    )*              # any number of times (e.g. optionally)
            )
    /xg) {
            push @match, { indent => $1, type => $2, key => $3, val => $4 };
    }

和评论$ mail-&gt; IsSMTP();

它为我工作......

答案 2 :(得分:-1)

尝试评论第8行。

// $mail->isSMTP();