简体   繁体   English

如何使用phpmailer从本地主机发送电子邮件?

[英]How to send e-mail from localhost with phpmailer?

okay, so I already try it for many times. 好的,所以我已经尝试了很多次。 The results was not error but I didn't receive any e-mail in my inbox or spam folder 结果不是错误,但收件箱或垃圾邮件文件夹中没有收到任何电子邮件

here is my mail.php 这是我的mail.php

    <?php


require 'phpmailer/PHPMailerAutoload.php';

$mail = new PHPMailer();
//$mail->IsSMTP(); // telling the class to use SMTP
//$mail->Host = "localhost"; // SMTP server
//IsSMTP(); // send via SMTP
$mail->SMTPDebug = true;
$mail->IsSMTP();
$mail->Host     = "smtp.gmail.com"; // SMTP server Gmail
$mail->Mailer   = "gmail";
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = 'tls'; 
$mail->Port = 587;   


$mail->Username = "henrikus.antony@gmail.com"; // 
$mail->Password = "******"; // SMTP password
$webmaster_email = "henrikus.antony@gmail.com"; //Reply to this email ID
$email = "rikunime.share@gmail.com"; // Recipients email ID
$name = "Hendrikus Anthony"; // Recipient's name
$mail->From = $webmaster_email;
$mail->FromName = "Anthony";
$mail->AddAddress($email,$name);
$mail->AddReplyTo($webmaster_email,"Anthony");
$mail->WordWrap = 50; // set word wrap

$mail->IsHTML(true); // send as HTML
$mail->Subject = "Ini adalah Email HTML";
$mail->Body = "Ini adalah email contoh"; //HTML Body
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body 
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent";
}
?>

please someone, I really need help. 请某人,我真的需要帮助。 do I need a hosting? 我需要托管吗? or there are something wrong with my syntax? 还是我的语法有问题? whether sendmail.ini and php.ini affect the mail.php? sendmail.ini和php.ini是否会影响mail.php?

Here is my solution which I found out from couple of articles. 这是我从几篇文章中找到的解决方案。

<?php

require_once "vendor/autoload.php";

$mail = new PHPMailer;

//Enable SMTP debugging. 
$mail->SMTPDebug = 3;                               
//Set PHPMailer to use SMTP.
$mail->isSMTP();            
//Set SMTP host name                          
$mail->Host = "smtp.gmail.com";
//Set this to true if SMTP host requires authentication to send email
$mail->SMTPAuth = true;                          
//Provide username and password     
$mail->Username = "name@gmail.com";                 
$mail->Password = "password";                           
//If SMTP requires TLS encryption then set it
//$mail->SMTPSecure = "tls";                           
//Set TCP port to connect to 
$mail->Port = 587;                                   

$mail->From = "name@gmail.com";
$mail->FromName = "Full Name";

$mail->smtpConnect(
    array(
        "ssl" => array(
            "verify_peer" => false,
            "verify_peer_name" => false,
            "allow_self_signed" => true
        )
    )
);

$mail->addAddress("reciever@ymail.com", "Recepient Name");

$mail->isHTML(true);

$mail->Subject = "Subject Text";
$mail->Body = "<i>Mail body in HTML</i>";
$mail->AltBody = "This is the plain text version of the email content";

if(!$mail->send()) 
{
    echo "Mailer Error: " . $mail->ErrorInfo;
} 
else 
{
    echo "Message has been sent successfully";
}

This won't require any server settings on your localhost. 这不需要在本地主机上进行任何服务器设置。

$mail->smtpConnect(
    array(
        "ssl" => array(
            "verify_peer" => false,
            "verify_peer_name" => false,
            "allow_self_signed" => true
        )
    )
); 

This part of code asks smtp not to verify any connection and can send the mail without verifying the sender. 这部分代码要求smtp不要验证任何连接,并且可以在不验证发件人的情况下发送邮件。 Also you need to enable IMAP settings from your mailbox settings. 另外,您需要从邮箱设置中启用IMAP设置。

Here are the links for reference. 这里是参考链接。 https://www.sitepoint.com/sending-emails-php-phpmailer/ https://github.com/PHPMailer/PHPMailer/issues/368#issuecomment-75821110 https://www.sitepoint.com/sending-emails-php-phpmailer/ https://github.com/PHPMailer/PHPMailer/issues/368#issuecomment-75821110

You need an SMTP server to send out mail. 您需要SMTP服务器来发送邮件。 Assuming you want to use this for testing purposes, try downloading a free SMTP local server such as this one . 假设您要将其用于测试目的,请尝试下载免费的SMTP本地服务器(例如this)

If you want to actually send out mail in a production environment, consider using an external service such as SendGrid or MailChimp. 如果要在生产环境中实际发送邮件,请考虑使用外部服务,例如SendGrid或MailChimp。 Alternatively, if you want to stick with SMTP, you are going to need your own web server to send mail from. 另外,如果您要坚持使用SMTP, 需要使用自己的Web服务器来发送邮件。

You shouldn't comment out the line that tells the mailer to use smtp except you really want to use the normal mail function,which i don't think you want to 您不应注释掉告诉邮件程序使用smtp的行,除非您确实要使用普通的邮件功能,我认为您不希望使用

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

//Create a new PHPMailer instance
    $mail = new PHPMailer;   
    $mail->isSMTP();
// change this to 0 if the site is going live
    $mail->SMTPDebug = 2;
    $mail->Debugoutput = 'html';
    $mail->Host = 'smtp.gmail.com';
    $mail->Port = 587;
    $mail->SMTPSecure = 'tls';

 //use SMTP authentication
    $mail->SMTPAuth = true;
//Username to use for SMTP authentication
    $mail->Username = "xxxxxx@gmail.com";
    $mail->Password = "******";
    $mail->setFrom('xxx@ww.com', 'Somebody');
    $mail->addReplyTo('xxx@ww.com', 'Somebody');
    $mail->addAddress('xxx@ww.com', 'Somebody');
    $mail->Subject = 'New contact from somebody';
    // $message is gotten from the form
    $mail->msgHTML($message);
$mail->AltBody = $filteredmessage;
    if (!$mail->send()) {
        echo "We are extremely sorry to inform you that your message
could not be delivered,please try again.";
    } else {
        echo "Your message was successfully delivered,you would be contacted shortly.";
        }
?> 

please note you must be connected to the internet for gmail's smtp to work 请注意,您必须连接到互联网才能使用Gmail的smtp

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM