2017-10-19 56 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)