无法使用来自localhost的gmail和postfix发送电子邮件

时间:2017-12-31 21:53:31

标签: php email smtp postfix-mta postfix

我是PHP开发的初学者,我正在学习使用xampp从localhost发送电子邮件的教程。最初我可以使用postfix和gmail发送电子邮件,但在2周后,它再也无法使用了。

我通过使用以下代码行修改postfix文件来配置mta main.cf

in main.cf file

# Gmail SMTP
relayhost=smtp.gmail.com:587
# Enable SASL authentification in the Postfix SMTP
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/
sasl_passwd
smtp_sasl_security_options=noanonymous
smtp_sasl_mechanism_filter=plain
# Enable TLS i.e. SSL
smtp_use_tls=yes
smtp_tls_security_level=encrypt
tls_random_source=dev:/dev/urandom

我已设置允许在gmail上启用较少安全的应用。我还制作包含电子邮件帐户及其密码的sasl_passwd文件

smtp.gmail.com:587 fake@gmail.com:password123456

它可以完美地工作大约1周,然后它停止工作,我从gmail收到一封关于重要安全警报的电子邮件,但在获得许可后,它可以再次正常工作。

但是现在,在那之后的两周内,我无法使用postfix再次发送电子邮件。并且gmail没有再次通知。在终端/命令行中,我一直尝试使用此命令发送和发送电子邮件:

sudo postfix stop
sudo postfix start
sudo postfix reload
date | mail -s testing someemail@gmail.com

但它无法发送电子邮件。

这是发送电子邮件时的PHP代码

<?php 

class email {

    // membuat token untuk konfirmasi email
    function generateToken ($length) {
        $characters = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";

        // mendapatkan panjang karakter
        $charsLength = strlen(($characters));

        $token = "";

        for($i = 0; $i < $length; $i++) {

            $token .= $characters[rand(0,$charsLength-1)];

        }

        return $token;
    }


    // membuka template isi email dari html file untuk konfirmasi registrasi
    function confirmationTemplate() {
        $file = fopen("templates/confirmationTemplate.html", "r") or die ("unable to open file");
        $template = fread($file, filesize("templates/confirmationTemplate.html"));

        fclose($file);

        return $template;

    }

    // membuka template isi email dari html file untuk melakukan reset password
    function resetPasswordTemplate() {
        $file = fopen("templates/resetPasswordTemplate.html", "r") or die ("unable to open file");
        $template = fread($file, filesize("templates/resetPasswordTemplate.html"));

        fclose($file);

        return $template;

    }


    // mengirim email dengan PHP
    function sendEmail($details) {

        // isi informasi email
        $subject = $details["subject"];
        $to = $details["to"];
        $fromName = $details["fromName"];
        $fromEmail = $details["fromEmail"];
        $body = $details["body"];

        //email header
        $headers = "MIME-Version: 1.0"."\r\n";
        $headers .= "Content-type:text/html;content=UTF-8"."\r\n";
        $headers .= "From: ".$fromName."<".$fromEmail.">"."\r\n";

        // PHP function send email
        mail($to,$subject,$body,$headers);

    }




}



 ?>

这里出了什么问题?

0 个答案:

没有答案