尝试使用 SMTP class 发送电子邮件 (C#)
Attempting to send email with SMTP class (C#)
我正在尝试使用 C# SmtpClient class 发送电子邮件。 "catch" 块在尝试 "send" 消息后执行。当我去查看异常时,InnerException 显示 "Unable to connect to the remote server",消息显示 "Failure sending mail"。 StatusCode 是 "General failure".
我是否缺少某些凭据?我是否需要为 SmtpClient 或 MailMessage 的实例设置更多字段?
代码如下:
private void sendEmail(string recepientEmailAddress) {
string subjectEmail = "Subject Email";
MailAddress to = new MailAddress("example@email.com");
MailAddress from = new MailAddress("example@example.com");
MailMessage message = new MailMessage(from, to);
message.Subject = subjectEmail;
message.IsBodyHtml = true;
message.Body = "Body example";
try
{
SmtpClient sc = new SmtpClient(ConfigurationManager.AppSettings["MailServer"].ToString());
sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.EnableSsl = true;
sc.UseDefaultCredentials = true;
sc.Send(message);
}
catch (Exception e)
{
Helpers.ErrorLogger.ProcessError(e.Message, e.StackTrace, "RegistrationController", "SendEmail");
}
}
private void sendEmail(string recepientEmailAddress) {
string subjectEmail = "Subject Email";
MailAddress to = new MailAddress("example@email.com");
MailAddress from = new MailAddress("example@example.com");
MailMessage message = new MailMessage(from, to);
message.Subject = subjectEmail;
message.IsBodyHtml = true;
message.Body = "Body example";
try
{
SmtpClient sc = new SmtpClient(ConfigurationManager.AppSettings["MailServer"].ToString());
sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.EnableSsl = true;
sc.Host="smtp.gmail.com"
sc.port = 587;
sc.UseDefaultCredentials = true;
sc.Send(message);
}
catch (Exception e)
{
Helpers.ErrorLogger.ProcessError(e.Message, e.StackTrace, "RegistrationController", "SendEmail");
}
}
添加端口(gmail:587)
添加主机(smtp.gmail.com
如果不起作用,请尝试添加用户名和密码
变化自
sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
到
sc.Credentials = new System.Net.NetworkCredential("username","password")
public static bool Send()
{
try
{
var fromAddress = new MailAddress("xyz@example.com");
var toAddress = new MailAddress("xyziahd@example.com");
const string subject = "subjects";
const string userName = "serverCredentail";
const string Password = "serverpassword";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "servernameexample.com",
Port = 25,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(userName, Password)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
}
catch(Exception ex)
{
return false;
}
return true;
}
这段代码应该可以工作我刚刚测试过它。
我正在尝试使用 C# SmtpClient class 发送电子邮件。 "catch" 块在尝试 "send" 消息后执行。当我去查看异常时,InnerException 显示 "Unable to connect to the remote server",消息显示 "Failure sending mail"。 StatusCode 是 "General failure".
我是否缺少某些凭据?我是否需要为 SmtpClient 或 MailMessage 的实例设置更多字段?
代码如下:
private void sendEmail(string recepientEmailAddress) {
string subjectEmail = "Subject Email";
MailAddress to = new MailAddress("example@email.com");
MailAddress from = new MailAddress("example@example.com");
MailMessage message = new MailMessage(from, to);
message.Subject = subjectEmail;
message.IsBodyHtml = true;
message.Body = "Body example";
try
{
SmtpClient sc = new SmtpClient(ConfigurationManager.AppSettings["MailServer"].ToString());
sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.EnableSsl = true;
sc.UseDefaultCredentials = true;
sc.Send(message);
}
catch (Exception e)
{
Helpers.ErrorLogger.ProcessError(e.Message, e.StackTrace, "RegistrationController", "SendEmail");
}
}
private void sendEmail(string recepientEmailAddress) {
string subjectEmail = "Subject Email";
MailAddress to = new MailAddress("example@email.com");
MailAddress from = new MailAddress("example@example.com");
MailMessage message = new MailMessage(from, to);
message.Subject = subjectEmail;
message.IsBodyHtml = true;
message.Body = "Body example";
try
{
SmtpClient sc = new SmtpClient(ConfigurationManager.AppSettings["MailServer"].ToString());
sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
sc.DeliveryMethod = SmtpDeliveryMethod.Network;
sc.EnableSsl = true;
sc.Host="smtp.gmail.com"
sc.port = 587;
sc.UseDefaultCredentials = true;
sc.Send(message);
}
catch (Exception e)
{
Helpers.ErrorLogger.ProcessError(e.Message, e.StackTrace, "RegistrationController", "SendEmail");
}
}
添加端口(gmail:587)
添加主机(smtp.gmail.com
如果不起作用,请尝试添加用户名和密码 变化自
sc.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
到
sc.Credentials = new System.Net.NetworkCredential("username","password")
public static bool Send()
{
try
{
var fromAddress = new MailAddress("xyz@example.com");
var toAddress = new MailAddress("xyziahd@example.com");
const string subject = "subjects";
const string userName = "serverCredentail";
const string Password = "serverpassword";
const string body = "Body";
var smtp = new SmtpClient
{
Host = "servernameexample.com",
Port = 25,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(userName, Password)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
}
catch(Exception ex)
{
return false;
}
return true;
}
这段代码应该可以工作我刚刚测试过它。