.NET Почему я не могу переопределить мой web.config mailSettings? - PullRequest
1 голос
/ 02 октября 2009

Обычно мое приложение отправляет электронное письмо с общим системным адресом. Но в некоторых случаях я хочу вместо этого отправить как вошедший в систему пользователь.

web.config:

<?xml version="1.0"?>
<configuration>
    ...
    <appSettings>
        ...
        <add key="DefaultEmailAddress"
             value="noreply@example.com" />
    </appSettings>
    <system.net>
        <mailSettings>
            <smtp>
                <network host="servername"
                         port="25"
                         userName="noreply"
                         password="apple" />
            </smtp>
        </mailSettings>
    </system.net>
    ...
</configuration>

Этот код не может переопределить отправителя по умолчанию из web.config:

Dim from As String = ConfigurationManager.AppSettings("DefaultEmailAddress")
Dim to As String = "sadams@example2.com"
Dim m As New Mail.MailMessage(from, to)
m.IsBodyHtml = True
m.Subject = "Test"
m.Body = "<p>This is a test.</p>"

Dim c As New System.Net.Mail.SmtpClient

If CurrentUser.HasExchangeCredentials Then
    Dim userName As String = CurrentUser.ExchangeUserName
    Dim password As String = CurrentUser.ExchangePassword
    Dim address As String = CurrentUser.EmailAddress
    c.UseDefaultCredentials = False
    c.Credentials = New System.Net.NetworkCredential(userName, password)
    m.Sender = New Mail.MailAddress(address)
End If

c.Send(m)

Моя электронная почта отправляется, но она отправляется как noreply@example.com, а также не отображается в папке отправленных Outlook.

Я не хочу ИспользоватьDefaultCredentials . Я хочу использовать новый, отличный NetworkCredential .

Я использую Microsoft Exchange.

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Я думаю, что это отвечает на ваш вопрос:

http://www.vbdotnetforums.com/vb-net-general-discussion/14895-system-net-mail-mailmessage-sender-vs-system-net-mail-mailmessage.html

Отправитель и От являются отдельными. Изменение отправителя не изменит адрес отправителя.

В вашем коде установите свойство From в свою адресную переменную.

1 голос
/ 02 октября 2009

В вашем коде выше я не вижу, где вы переопределяете отправителя по умолчанию. Вы устанавливаете значение «От» на noreply@example.com:

Dim from As String = ConfigurationManager.AppSettings("DefaultEmailAddress")

Вы должны попробовать что-то вроде:

Dim from As String = CurrentUser.ExchangeUserName

При этом будет использоваться адрес электронной почты этого пользователя вместо значения, указанного в файле web.config.

...