> 백엔드 개발 > PHP 튜토리얼 > linux - SMTP服务器拒绝PHP函数发送邮件的问题?

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

WBOY
풀어 주다: 2016-06-06 20:48:31
원래의
1271명이 탐색했습니다.

<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框架的 ,也起到了这种问题 可以帮忙解决一下吗

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿