2016-11-29 2 views
0

У меня уже есть почтовая служба, но мне нужно использовать разные адреса, потому что эта служба используется многими службами. Теперь у меня есть этот код, который работает отлично:Отправлять почту, используя разные адреса

public static bool SendMail(Mail mail) 
{ 
    var smtp = new SmtpClient(); 
    var credential = (NetworkCredential) smtp.Credentials; 
    var mailMessage = new MailMessage 
    { 
     From = new MailAddress(credential.UserName, mail.DisplayName), 
     Subject = mail.Subject, 
     Body = mail.Body, 
     IsBodyHtml = true 
    }; 
    mailMessage.To.Add(new MailAddress(mail.To)); 
    if (!string.IsNullOrEmpty(mail.TemplatePath)) 
     mailMessage = embedImages(mailMessage, mail); 
    smtp.Send(mailMessage); 
    return true; 
} 

> And the web.config: 

<mailSettings> 
    <smtp from="[email protected]"> 
    <network host="smtp.gmail.com" enableSsl="true" port="587" userName="[email protected]" password="123456" /> 
    </smtp> 
</mailSettings> 

> The Mail parameter, is an object: 

public class Mail 
{ 
    public string Subject { get; set; } 
    public string Body { get; set; } 
    public string To { get; set; } 
    public string TemplatePath { get; set; } 
    public string DisplayName { get; set; } 
    public string From { get; set; } 
} 

Таким образом, по умолчанию, он должен использовать mailSettings, но, если mail.From свойство = нуль, оно должно быть отправлено по этой почте!.

Благодаря

+1

затем измените адрес с адреса на что-то вроде NoReply @ Независимо от того, где в коде вы читаете из 'mailSettings'? – MethodMan

ответ

0

Вы пытаетесь отправить сообщение из нескольких из адресов или вы хотите, чтобы иметь возможность использовать этот же метод с отличается от адреса?

Если вы хотите иметь возможность повторно использовать этот метод с разными адресами в разные моменты времени, вы можете передать учетные данные в методе в качестве параметра. Затем вы сможете настроить smtp на основе учетных данных, предоставленных параметром.

Я не вижу места, где вы читаете настройки MailSettings. Поэтому я не вижу, как вы настраиваете свой smtp.

0

Вот как я отправляю электронные письма с помощью SmtpClient. Я использую ConfigurationManager.AppSettings, но та же идея применяется для любого типа файла конфигурации, который вы используете: попытайтесь получить сообщение «от», а если оно равно null, используйте значение по умолчанию.

string subject = "Email subject here." 
    string msg = "Email body here."   

    string fromEmail = ConfigurationManager.AppSettings["fromEmail"]; 

    if (fromEmail == null) 
     fromEmail = "[email protected]" 

    string emailServer = ConfigurationManager.AppSettings["emailServer"]; 
    int emailServerPort = int.Parse(ConfigurationManager.AppSettings["emailServerPort"]); 
    string toEmail; //email recipients   

    SmtpClient client = new SmtpClient(emailServer, emailServerPort); 
    MailMessage mail = new MailMessage(fromEmail, toEmail, subject, msg); 
    client.Send(mail); 
Смежные вопросы