问题描述
我正在分析具有邮件发送功能的C#项目。由于某些限制,我无法运行该项目。在分析代码时,我得到的查询很少
MailAddress toMailAddress = new MailAddress(strToMail);
MailAddress fromMailAddress = new fromMailAddress(strFromMail);
SmtpClient smtpClient = new SmtpClient(smtpServer);
String strBody = strMessage;
MailMessage msg = New MailMessage();
msg.From = fromMailAddress
msg.To.Add(toMailAddress);
msg.Subject = strSubject;
smtpClient.Send(msg);
- 此处发件人地址来自数据库,但数据库中没有存储相应电子邮件的凭据,也没有通过代码传递的凭据。这是否意味着我可以从任何没有其凭据的帐户发送电子邮件?
- 发送邮件是否需要Outlook?如果是这样,则将Outlook配置为与代码中的“发件人”地址不同的帐户,是否会抛出任何错误?
解决方法
-
取决于
SMTP
服务器的配置方式。在您发布的代码中,它似乎是通过默认端口SMTP
(可能在25
,465
或587
上)发送的,没有凭据。也可以在配置文件(web.config,app.config)中对其进行配置。 -
否,您的应用程序在.net下运行,并且Outlook不会对其产生影响。
-
这取决于SMTP配置,也许是因为您尚未配置,所以您遇到了错误。您面临的确切错误是什么?这是我在代码中用于发送邮件的代码段,可以通过以下代码段提供连接和凭据,希望对您有所帮助!
-
根据我的了解,Outlook电子邮件不应影响或引起任何错误。
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = "server = YOURSERVERNAME; database = YOURDBNAME; User ID = sa; Password = YOURPASSWORD"; //Connection Details
//select fields to mail required details
SqlCommand sqlCommand = new SqlCommand("select Name,DOB,Email,Mob from Student",sqlConnection); //select query command
SqlDataAdapter sqlDataAdapter = new System.Data.SqlClient.SqlDataAdapter();
sqlDataAdapter.SelectCommand = sqlCommand;
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com"); //This is for creating a gmail client
mail.From = new MailAddress("your_email_address@gmail.com");
mail.To.Add("to_address");
mail.Subject = "Test Mail";
mail.Body = "Test SMTP mail from GMAIL";
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username","password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
MessageBox.Show("mail Send");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}