System.Net.Mail
を使用する単純なメール送信者クラスを使用しています。私はさまざまなユーザーが(同じsmtpアカウントを使用して)それを介して電子メールを送信できるようにアプリケーションを更新する必要がありますが、 "送信元"アドレスはその送信元のユーザーである必要があります。 From
プロパティをMailMessage
に設定し、そのアドレスをMailMessage
のコンストラクタに送信しましたが、動作しているもののノーズです。私は、メールAPIの仕組みを理解していない、あるいは単純なことが不足していると確信しています。誰も助けることができますか?C#を使用してGmail経由で送信されたメールの別の「送信元」アドレスを設定する
ここでは、基本的にMailMessage
、NetworkCredential
、およびをラップする私のMailSenderクラスは、1つの単純なメール送信インターフェイスを提供します。
class MailSender
{
private NetworkCredential credential;
private String SenderAddress;
private SmtpClient client;
public MailSender(String ServerURL, String account, String password, String FromAddress = null, int port = -1, bool UseSSL = true)
{
if (port > 0)
{
client = new SmtpClient(ServerURL, port);
}
else
{
client = new SmtpClient(ServerURL);
}
credential = new NetworkCredential(account, password);
client.UseDefaultCredentials = false;
client.EnableSsl = UseSSL;
client.Credentials = credential;
if (FromAddress != null)
{
SenderAddress = FromAddress;
}
else
{
SenderAddress = account;
}
}
public bool SendMessage(String to, String subject, String body)
{
try
{
MailMessage message = new MailMessage(SenderAddress, to, subject, body);
message.From = new MailAddress(SenderAddress, "tester");
message.IsBodyHtml = true;
client.Send(message);
}
catch
{
return false;
}
return true;
}
}
IIRC、GMailはアカウントの設定に従ってそれを変更します。 – leppie
Googleは、認証のために渡した認証情報以外のアカウントからメールを送信することを許可しない可能性が非常に高いかもしれません。 –
@leppieと@Mikael Svenson:オフィスのsmtpでも試してみました。同じ結果。 – MAK