php - 2019 PHPMailer 6.07 / PHP Scrip 如何发送电子邮件工作示例
问题描述
此代码不会使用 phpMailer v6.0.7 发送电子邮件 - 我尝试了各种更改,tls、ssl、465 和 587。我在日志中没有发现错误,php.ini 有错误,报告错误。与我的托管服务合作以确认连接设置。我不想使用作曲家,但按照 github 上的文档以及从 github 中提取所有文件并上传到我的 cpanel。不想使用 5.2,因为它不再受支持。实时托管服务使用 linux 和 PHP 7。检查垃圾邮件和所有文件夹。Cpanel 有一个跟踪邮件或已投递的邮件,以查看它是否被拒绝,并且没有任何说明它被发送或拒绝。使用 Debug 2,3,4 没有错误。Php.ini 打开了错误。似乎它从未发送到服务器以被拒绝或允许。
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
if(isset($_POST[‘submit’]))
$mail = new PHPMailer(true);
$mail->SMTPDebug = 2; // 0 = off (for production use) - 1 = client messages - 2 = client and server messages
$mail->isSMTP();
$mail->Host = 'mail.email.org';
$mail->SMTPSecure = 'ssl'; <-- Recommend by the hosting service <--Hosting Service Docs verify this
$mail->Port = 465; <-- Recommend by the hosting service <--Hosting Service Docs verify this
$mail->SMTPAuth = true;
$mail->Username = 'Mail@email.org';
$mail->Password = 'Using the correct Password'; <-- Resettled the password and verified its correct.
$to = 'Mail@email.org'; <-- sending this to myself
$from = 'Mail@email.org'; <--sending to myself
<Note this below was recommeended my hosting service to set it up this way below>
$first_name = ((isset($_POST['FirstName']))&&(!is_null($_POST['FirstName'])))? $_POST['FirstName']:'';
$last_name = ((isset($_POST['LastName']))&&(!is_null($_POST['LastName'])))? $_POST['LastName']:'';
$email = ((isset($_POST['Email']))&&(!is_null($_POST['Email'])))? $_POST['Email']:'';
$age = ((isset($_POST['Age']))&&(!is_null($_POST['Age'])))? $_POST['Age']:'';
$student = ((isset($_POST['Student']))&&(!is_null($_POST['Student'])))? $_POST['Student']:'';
$agree18 = ((isset($_POST['Agree18']))&&(!is_null($_POST['Agree18'])))? $_POST['Agree18']:'';
/* Set the mail sender. */
$mail->setFrom( $to , 'Research');
/* Add a recipient. */
$mail->addAddress( $_POST['Email'] , 'Research');
/* Set the subject. */
$mail->Subject = 'Learn More about Research Requested';
$mail->isHTML(TRUE);
$mail->Body = '<html> "First Name:" . $first_name . " Last Name:" . $last_name . " Email:". $email . " Age:" . $age . " Student:" . $student . " Agree18:" . $agree18 . ""
</html>';
$mail->AltBody = ' "First Name:" . $first_name . " Last Name:" . $last_name . " Email:". $email . " Age:" . $age . " Student:" . $student . " Agree18:" . $agree18 . ""
'; <-- Note I have tried /r/n and failed
if($mail->send()){
$msg="Your email msg has been send";
}else{
$msg="mail msg has not been send";
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
>
</head>
<body>
<div class="container">
<form method="POST" enctype=multipart/form-data action="">
<php echo '$msg' ?>
<h4>Want to Learn More? Please fill out the form below.</h4>
<div class="form-group">
<label for="FirstName">First Name:</label>
<input type="text" class="form-control" name="FirstName" id="FirstName" placeholder="First Name" required="">
</div>
<div class="form-group">
<label for="LastName">Last Name:</label>
<input type="text" class="form-control" name="LastName" id="LastName" placeholder="Last Name"required="">
</div>
<div class="form-group">
<label for="Age">How old are you?</label>
<input type="text" class="form-control" name="Age" id="Age" placeholder="Age"required="">
</div>
<div class="form-group">
<label for="Email">Email:</label>
<input type="email" class="form-control" name="Email" id="Email" placeholder="Yes@SModels.org" required="">
</div>
<h4Please Select if your a Student?</h4>
<div><small class="form-text text-muted">
Select all that apply.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="Student" id="Student" value="Yes" >
<label class="custom-control-label" for="Student">Student</label>
</div>
<h4>Please agree to the following:</h4>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="Agree18" id="Agree18" value="Yes" required="" >
<label class="custom-control-label" for="Agree18">I can prove I am 18 years or older. I am legal age to participate according to my country. Proof may be required by law.</label>
</div>
<div><small>
All information will be held strictly confidential in accordance with our disclosure policy which can be requested.
</small></div> <br>
<center>
<div class="submit">
<button type="submit" name="submit" class="btn btn-primary">Send <i class="fa fa-lock"></i></button>
</div>
</center> <br><br><br>
</div>
</form>
</div>
~~~~~~
I hope to have a working example code for the latest phpmailer 6.0.7 and I have read a lot of documents. I want a good working example for 2019 since there is a lot of old phpmailer.
解决方案
*首先,我要感谢 Synchro的帮助。下面是我使用 PHPMailer 6.0.7 和实时托管的工作示例代码。我会记下我学到和修复的内容。***
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP; <- This fixed most of my issues but not always required per Sychro
require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
$mail = new PHPMailer(true);
if(isset($_POST[‘submit’]))
{ <--- Added Opening
$first_name = ((isset($_POST['FirstName']))&&(!is_null($_POST['FirstName'])))? $_POST['FirstName']:'';
$last_name = ((isset($_POST['LastName']))&&(!is_null($_POST['LastName'])))? $_POST['LastName']:'';
$email = ((isset($_POST['Email']))&&(!is_null($_POST['Email'])))? $_POST['Email']:'';
$age = ((isset($_POST['Age']))&&(!is_null($_POST['Age'])))? $_POST['Age']:'';
$student = ((isset($_POST['Student']))&&(!is_null($_POST['Student'])))? $_POST['Student']:'';
$agree18 = ((isset($_POST['Agree18']))&&(!is_null($_POST['Agree18'])))? $_POST['Agree18']:'';
Note: Hosting Service should provide this infor to you.
----------
$mail->isSMTP();
$mail->SMTPDebug = 2; // 0 = off (for production use) - 1 = client messages - 2 = client and server messages
$mail->Host = 'mail.email.org';
$mail->SMTPSecure = 'ssl'; <-Could be TLS
$mail->Port = 465; <- Could be 587 or 25
$mail->SMTPAuth = true;
$mail->Username = 'Mail@email.org'; <-To access your Hosting email
$mail->Password = 'Password';
/* Set the mail sender. */
$mail->setFrom('Mail@email.org'); <- From Myself
$mail->addAddress('Mail@email.org'); <-To Myself
$mail->Subject = 'Research Requested';
$mail->isHTML(TRUE);
$mail->Body = '<html> First Name: '.$first_name.' Last Name: '.$last_name.' Email: '.$email.' Age: '.$age.' Student: '.$student.' Agree18: '.$agree18.'
</html>';
$mail->send()
} <--Added Closing
?>
<!DOCTYPE html>
<html lang="en">
<head>
>
</head>
<body>
<div class="container">
<form method="POST" enctype=multipart/form-data action="#"> <--added #
<h4>Want to Learn More? Please fill out the form below.</h4>
<div class="form-group">
<label for="FirstName">First Name:</label>
<input type="text" class="form-control" name="FirstName" id="FirstName" placeholder="First Name" required="">
</div>
<div class="form-group">
<label for="LastName">Last Name:</label>
<input type="text" class="form-control" name="LastName" id="LastName" placeholder="Last Name"required="">
</div>
<div class="form-group">
<label for="Age">How old are you?</label>
<input type="text" class="form-control" name="Age" id="Age" placeholder="Age"required="">
</div>
<div class="form-group">
<label for="Email">Email:</label>
<input type="email" class="form-control" name="Email" id="Email" placeholder="Yes@SModels.org" required="">
</div>
<h4Please Select if your a Student?</h4>
<div><small class="form-text text-muted">
Select all that apply.
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="Student" id="Student" value="Yes" >
<label class="custom-control-label" for="Student">Student</label>
</div>
<h4>Please agree to the following:</h4>
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" name="Agree18" id="Agree18" value="Yes" required="" >
<label class="custom-control-label" for="Agree18">I can prove I am 18 years or older. I am legal age to participate according to my country. Proof may be required by law.</label>
</div>
<div><small>
All information will be held strictly confidential in accordance with our disclosure policy which can be requested.
</small></div> <br>
<center>
<div class="submit">
<button type="submit" name="submit" class="btn btn-primary">Send <i class="fa fa-lock"></i></button>
</div>
</center> <br><br><br>
</div>
</form>
</div>
推荐阅读
- java - JSON 未命名集合到 Java (jackson ObjectMapper)
- java - 如何在Java的条件语句范围内返回对象?
- regular-language - 是语言 L1 = {a^p; p 不是素数并且 p>=0} 递归可枚举?
- permissions - 授予所有人的 Azure DevOps 服务器(本地)权限
- java - 对同一对象的并发保存(Spring Data,JpaRepository)调用抛出 ConstraintViolationException
- visual-studio-code - cpptools 属于哪个扩展?
- ag-grid - 带有行组的 ag-grid valueGetter
- python - 在字典字符串比较中查找日期时间戳的值
- ionic-framework - 在 Ionic-v1 中的 Android 11 上打开相机时出错
- sveltekit - SvelteKit:如何添加全局错误 401 处理?