我尝试过以下脚本通过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.
答案 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。
为什么要将地址和回复地址设置为相同?