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

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

WBOY
Release: 2016-06-06 20:48:31
Original
1270 people have browsed it

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

登陆服务器用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>
Copy after login
Copy after login

回复内容:

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

登陆服务器用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>
Copy after login
Copy after login

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

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

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template