Heim >Backend-Entwicklung >PHP-Tutorial >linux - SMTP服务器拒绝PHP函数发送邮件的问题?

linux - SMTP服务器拒绝PHP函数发送邮件的问题?

WBOY
WBOYOriginal
2016-06-06 20:48:311272Durchsuche

<code>SMTP server error: 5.7.1 : Relay access denied
</code>

登陆服务器用mail -s "test" *****@qq.com 测试过smtp服务器是可以发送邮件的。为什么用PHP写的函数就被拒绝了呢?这段函数以前是起作用的,而且丝毫没动过。

<code>public function SendMail($address,$title,$message) {
    vendor('PHPMailer.class#phpmailer');

    $mail=new PHPMailer();
        // 设置PHPMailer使用SMTP服务器发送Email
    $mail->IsSMTP();
        // set HTML
    $mail->ishtml(true);

        // 设置邮件的字符编码,若不指定,则为'UTF-8'
    $mail->CharSet='UTF-8';

        // 添加收件人地址,可以多次使用来添加多个收件人
    $mail->AddAddress($address);

        // 设置邮件正文
    $mail->Body=$message;

        // 设置邮件头的From字段。
    $mail->From=C('MAIL_ADDRESS');

        //设置发件人名字
    $mail->FromName=C('MAIL_SENDER');

        // 设置邮件标题
    $mail->Subject=$title;

        // 设置SMTP服务器。
    $mail->Host=C('MAIL_SMTP');

        // 设置为“需要验证”
    $mail->SMTPAuth=true;

        // 设置用户名和密码。
    $mail->Username=C('MAIL_LOGINNAME');

    $mail->Password=C('MAIL_PASSWORD');

        // 发送邮件。
    $mail->Send();
    return $mail;
}
</code>

回复内容:

<code>SMTP server error: 5.7.1 : Relay access denied
</code>

登陆服务器用mail -s "test" *****@qq.com 测试过smtp服务器是可以发送邮件的。为什么用PHP写的函数就被拒绝了呢?这段函数以前是起作用的,而且丝毫没动过。

<code>public function SendMail($address,$title,$message) {
    vendor('PHPMailer.class#phpmailer');

    $mail=new PHPMailer();
        // 设置PHPMailer使用SMTP服务器发送Email
    $mail->IsSMTP();
        // set HTML
    $mail->ishtml(true);

        // 设置邮件的字符编码,若不指定,则为'UTF-8'
    $mail->CharSet='UTF-8';

        // 添加收件人地址,可以多次使用来添加多个收件人
    $mail->AddAddress($address);

        // 设置邮件正文
    $mail->Body=$message;

        // 设置邮件头的From字段。
    $mail->From=C('MAIL_ADDRESS');

        //设置发件人名字
    $mail->FromName=C('MAIL_SENDER');

        // 设置邮件标题
    $mail->Subject=$title;

        // 设置SMTP服务器。
    $mail->Host=C('MAIL_SMTP');

        // 设置为“需要验证”
    $mail->SMTPAuth=true;

        // 设置用户名和密码。
    $mail->Username=C('MAIL_LOGINNAME');

    $mail->Password=C('MAIL_PASSWORD');

        // 发送邮件。
    $mail->Send();
    return $mail;
}
</code>

PHPMailer会使用那些经常被ISP方禁用的函数,如popen,你可以用phpinfo()查询一下disable_functions的值,看看是否关多了function。

问题解决了,感谢大家的回答。最后看error发现是因为重启sasl后会把/var/run/saslauthd变成710。所以需要chmod.

我是用thinkphp框架的 ,也起到了这种问题 可以帮忙解决一下吗

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn