邮件程序错误:无法实例化邮件功能

时间:2017-04-12 07:12:50

标签: php email phpmailer

我尝试过以下脚本通过phpmailer发送邮件

    Dim myds As New DataSet()
    Dim mytable as New datatable()
    myds.Tables.Add(mytable)
    Dim myconstr As String = "ConnectionStringtoDataBase"
    Dim myconn As New SqlConnection(myconstr)

    Dim da as new SqlDataAdapter( “SELECT * FROM StudentTable”,cnn)
    Dim mycb As New SqlCommandBuilder(da)
    da.Fill(mytable)
    Dim myrow As DataRow = mytable.NewRow()
    myrow("ID") = "thestudentid"
    myrow("StudentName") = "John doe"
    myrow("StudentID") = 12345
    myrow("StudentClass") = "VB 101"
    mytable.Rows.Add(myrow)
    da.Update(mytable)

但是我得到了Mailer Error:

  

无法实例化邮件功能。

如何解决此错误?上面我提到了我的邮件服务器(mail.mydomain.com)和端口465.

2 个答案:

答案 0 :(得分:0)

您使用的代码是php的默认mail()函数。您需要使用SMTP。

您已禁用SMTP。

$mail = new PHPMailer;
//$mail-> isSMTP(); <----------- Here it is disabled.
$mail-> Host = 'mail.mydomain.com'; //smtp.gmail.com
$mail->SMTPDebug   = 2;
$mail-> SMTPAuth = true;

由于SMTP已禁用,因此使用mail()功能。在您的机器中未正确配置。

只需取消注释它应该有效。

完整代码:

$mail = new PHPMailer;
$mail-> isSMTP(); # SMTP is enabled now.
$mail-> Host = 'mail.mydomain.com'; //smtp.gmail.com
$mail->SMTPDebug   = 2;
$mail-> SMTPAuth = true;

希望这有帮助。

答案 1 :(得分:0)

你在这里犯了一大堆错误,因为我没有特别的理由可以看到。

当您使用自动加载器时,您不需要加载其他类 - 这就是自动加载器的用途。您似乎已将class.phpmailer.php的文件名更改为class.PHPMailer.php,这是非标准的,并且在区分大小写的文件系统上会出现问题,并且在您更新库时可能会中断。

如果您不拨打isSMTP(),则不会使用SMTP,因此不会使用任何SMTP设置(默认情况下它将使用PHP mail()功能。)

如果您使用SMTPSecure = 'tls',则需要Port = 587,而不是465。

为什么要禁用证书验证?你应该只是出于非常具体的原因这样做,而不仅仅是作为“让它运作”的随机措施。它代表了安全风险,所以除非你必须这样做,否则不要这样做,而且你知道确切的原因 - 如果你不知道,不要这样做。

无需致电WordWrap - 它还建议您将代码基于旧示例,并且可能正在运行旧版本的PHPMailer,因此get the latest

为什么要将地址和回复地址设置为相同?