我随机创建了一个Gmail帐户。我想用c#把这个账户发送到我的个人Gmail账户。最近我发现了FluentEmail。这是类:
public static class EmailSender
{
//the random account mail and password
private static string username = "blabla";
private static string password = "blabla";
static EmailSender()
{
NetworkCredential myCredentials = new NetworkCredential();
myCredentials.UserName = username;
myCredentials.Password = password;
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = myCredentials,
Port = 465,
EnableSsl = true,
};
var sender = new SmtpSender(() => smtp);
Email.DefaultSender = sender;
}
public static async Task SendEmail(string body)
{
var email = await Email
.From(username)
.To("mymail")
.Subject("NEW BUG")
.Body(body)
.SendAsync();
if (email.Successful)
{
Acr.UserDialogs.UserDialogs.Instance.Alert("Your message was sent!", "Succesful", "Ok");
}
}
}
我不知道为什么,但是当我点击发送按钮时什么也没发生。当我连续点击2次时,应用程序崩溃了。我在SendEmail函数的开始设置了一个断点,但我仍然不知道出了什么问题。也许我在构造函数中设置了错误?
我不熟悉FluentEmail,但有两点显然是有问题的:
-
检查邮件是否发送成功(
if (email.Successful)
)。如果没有,你就…什么也不做。相反,找出为什么邮件尚未发送,并显示该信息。如果你的返回对象有一个属性Successful
,我很确定它也有一个属性告诉你出了什么问题。 -
我确实瞥见了FluentEmail的源代码(基于你的问题),它显然使用。net的内置
SmtpClient
类。SmtpClient
不支持465端口的smtp协议。支持的选项是端口25的未经身份验证的SMTP或端口587的STARTTLS。