2017-10-19 82 views
0

我通過asp.net核2.0這樣tutorial發送電子郵件,讓我有這樣的事情在我的控制器發送郵件使用動態值與asp.net 2.0核心

SmtpClient client = new SmtpClient("mysmtpserver"); 
client.UseDefaultCredentials = false; 
client.Credentials = new NetworkCredential("username", "password"); 

MailMessage mailMessage = new MailMessage(); 
mailMessage.From = new MailAddress("[email protected]"); 
mailMessage.To.Add("[email protected]"); 
mailMessage.Body = "body"; 
mailMessage.Subject = "subject"; 
client.Send(mailMessage); 

和它的作品,但我想做的不那麼通用。就像將代碼發送到課堂並從控制器調用它一樣。比如在課堂上我想用變量,而不是靜態的內容,如

mailMessage.Body = "body"; 

相反,這個我想使用類似:

var body; 
mailMessage.Body = body; 

所以到控制器必須更改內容的能力。我怎樣才能做到這一點?問候

+0

所以你的代碼發送電子郵件私有函數...你想要的編寫控制器和模型來發送電子郵件的代碼?這有點含糊不清,特別是沒有任何現有的MVC,因爲你卡在哪裏...' –

+0

我有工作發送電子郵件代碼...我只是想做的不那麼通用,當我想要改變數據。例如在家庭控制器中,我想從課程中調用我的郵件方法。所以我想重寫這個消息的'mailMessage.Body'。現在在產品控制器我想使用相同的類,但我想重寫'mailMessage.Body'這個控制器方法...所以總而言之,我想有一個方法到類中,並在控制器中更改內容時,我想@ AustinFrench – Louis

+0

你爲什麼不簡單地創建一個函數SendEmail並將來自控制器的結果變量作爲參數傳遞給函數? – progrAmmar

回答

0

在你的控制器,添加一個名爲SendEmail

private bool SendEmail(string mail_to, string mail_subject, mail_body) 
{ 
    bool result = false; 
    try 
    { 
    SmtpClient client = new SmtpClient("mysmtpserver"); 
    client.UseDefaultCredentials = false; 
    client.Credentials = new NetworkCredential("username", "password"); 
    MailMessage mailMessage = new MailMessage(); 
    mailMessage.From = new MailAddress("[email protected]"); 
    mailMessage.To.Add(mail_to); 
    mailMessage.Body = mail_body; 
    mailMessage.Subject = mail_subject; 
    client.Send(mailMessage); 
    result = true; 
    } 
    catch(Exception ex){ result = false; } 
    return result; 
} 

用它在你的控制器

string mailBody = "Anything can be in the body\n. Mail contents."; 
string subject = "Mail Subject"; 
string mailTo = "[email protected]" 
SendEmail(mailTo, subject, mailBody)