在DNN中发送电子邮件

时间:2012-04-17 20:39:21

标签: email dotnetnuke sendmail send dotnetnuke-module

我正在尝试在我正在制作的DNN模块中发送电子邮件。但是,虽然它没有崩溃,但是没有发送电子邮件。我认为这与我试图使用的From Email有关。我不是100%确定我应该使用哪个电子邮件作为第一个参数。

Protected Sub Submit_Click(sender As Object, e As EventArgs) Handles Submit.Click
    DotNetNuke.Services.Mail.Mail.SendEmail("support@localhost", "myemail@site.com", "EmailTest", "Hello world!")
End Sub

3 个答案:

答案 0 :(得分:4)

更可能的问题是您没有正确配置SMTP设置。要配置SMTP设置,请以主机身份登录。然后,转到主持人 - >设置并填写“SMTP服务器设置”下的字段并保存。那里还有一个测试链接,以验证它们是否正常工作。

答案 1 :(得分:0)

派对可能已经很晚了,但我经常使用Mail.SendMail()方法,然后手动传递下面的所有STMP信息,然后在调试时检查返回的消息。 (截至DotNetNuke 5.5)

        Dictionary<string, string> hostSettings = HostController.Instance.GetSettingsDictionary();
        string server = hostSettings["SMTPServer"];
        string authentication = hostSettings["SMTPAuthentication"];
        string password = hostSettings["SMTPPassword"];
        string username = hostSettings["SMTPUsername"];

        // using the Mail.SendMail() method allows for easier debugging.
        var message = Mail.SendMail(from, user.Email, String.Empty, subject, body, String.Empty, "HTML", server, authentication, username, password);

答案 2 :(得分:0)

也要晚于游戏,但我今天早些时候遇到了类似的问题...

DNN sendMail或sendEmail方法自行处理异常,并将其添加到其DNN日志中。不幸的是,它们从未将上述异常返回给调用函数的主代码-因此,为什么您的代码执行得很好!

您可以进一步查看他们的例外表或用户界面中的管理日志,以获取有关您遇到的特定问题的更多信息。

我将代码更改为使用System.Net发送电子邮件并从DNN中的DotNetNuke.Entities.Host.Host对象收集所需的所有信息。这样,我们就可以处理错误并使代码得到解决:)我最终得到了这样的内容(它在c#中,但是您可以在VB.Net中用略有不同的语法进行相同的操作):

//make the email
MailMessage mail = new MailMessage("From@me.com","to@a.com,to@b.com,to@c.com");
mail.Subject = "test subject";
mail.Body = "actual email";

string dnnServerInfo = DotNetNuke.Entities.Host.Host.SMTPServer;
// The above looks like "server.com:port#", or "smtp.server.com:25"
//so we find the colon to get the server name, and port using the index below
int index = dnnServerInfo.IndexOf(':');

//make the SMPT Client
SmtpClient smtp = new SmtpClient();
smtp.Host = dnnServerInfo.Substring(0, index);
smtp.Port = Int32.Parse(dnnServerInfo.Substring(index + 1, dnnServerInfo.Length - index - 1));
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential(DotNetNuke.Entities.Host.Host.SMTPUsername, DotNetNuke.Entities.Host.Host.SMTPPassword);
smtp.EnableSsl = DotNetNuke.Entities.Host.Host.EnableSMTPSSL;

//send the email
smtp.Send(mail);

我使用了“ SendMail”中的部分原始代码来解决这个问题:https://stackoverflow.com/a/19515503/6659531

遇到此问题的任何人都祝你好运