[英]How to pass email address parameter in class method call?
在嘗試將電子郵件地址作為參數傳遞給類方法時,出現錯誤。 錯誤是:無法將字符串轉換為system.net mail.mailaddress。 有人可以解釋我的問題嗎?
方法調用
var fromAddress = "email1@noname.com";
var toAddress = "email2@noname.com;email3@noname.com";
SendEmail _sendEmail = new SendEmail();
_sendEmail.SendMail(fromAddress, toAddress);
類方法
public class SendEmail
{
public void SendMail(MailAddress fromAddress, MailAddress toAddress)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress(fromAddress);
mail.To.Add("toAddress");
mail.Subject = "Test Mail - 1";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "Write some HTML code here";
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
只需執行以下操作:
var fromAddress = new MailAddress("email1@noname.com");
var toAddress = new MailAddress("email2@noname.com");
SendEmail _sendEmail = new SendEmail();
_sendEmail.SendMail(fromAddress, toAddress);
或將方法參數類型從MailAddress
更改為string
public void SendMail(string fromAddress, string toAddress)
{
}
請不要同時做兩個! 然后,您將再次面臨類似的問題。
此外,在您的SendMail()
方法中,更改mail.To.Add("toAddress");
行到mail.To.Add(toAddress);
如果toAddress
傳遞MailAddress類型或mail.To.Add(new MailAddress(toAddress));
如果作為字符串類型傳遞。
如果您的toAddress
包含多個用逗號分隔的地址,請使用方法參數作為字符串,而不要使用mail.To.Add(toAddress);
行做如下:
foreach(string emailTo in toAddress.Split(';'))
{
mail.To.Add(new MailAddress(emailTo));
}
錯誤很明顯。 SendMail方法需要兩個MailAddress,並且您傳遞兩個字符串。 此外,在SendMail中,您可以像對待字符串一樣處理這兩個參數。 因此,只需更改SendMail方法的簽名即可接收兩個字符串
public class SendEmail
{
public void SendMail(string fromAddress, string toAddress)
{
try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
mail.From = new MailAddress(fromAddress);
// Note also the error on this line.
// You should put each single address in the To field,
// not all together
foreach(string s in toAddress.Split(';'))
mail.To.Add(s);
mail.Subject = "Test Mail - 1";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "Write some HTML code here";
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.Credentials = new System.Net.NetworkCredential("username", "password");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
最后,請注意,您不能在mail.To.Add方法上放置多個地址。 您需要一個接一個地放置它們,因此需要循環將輸入字符串拆分成單個郵件地址以進行添加
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.