"smtp.gmail.com"を使用してSmtpを使用してメールを送信しようとしています。私たちのプロジェクトでは、.net 3.5 FramweorkとC#を使用してXP互換性を維持しています。しかし、添付ファイルが5MBを超えると、私はいつも失敗しました。私は25メガバイトの大きさの添付ファイルを送信することを許可することをGoogleのSMTPが読んでいます。私はそれをしようとする場合しかし、それは常にエラーをスロー:大きな添付ファイルを添付したメールをc#
public void Send(SMTPServerInfo serverInfo, string from, string to, string subject, string body, IList<Attachment> attachments)
{
SmtpClient client = new SmtpClient();
client.EnableSsl = serverInfo.EnableSSL;
MailMessage message = new MailMessage(from, to, subject, body);
if(IsHTML)
message.IsBodyHtml = true;
client.Host = serverInfo.ServerName;
if(!Text.IsEmpty(serverInfo.UserName))
client.Credentials = new NetworkCredential(serverInfo.UserName, serverInfo.Password);
if(serverInfo.Port.HasValue)
client.Port = serverInfo.Port.Value;
if(attachments != null)
foreach(Attachment attachment in attachments)
message.Attachments.Add(attachment);
client.Send(message);
message.Dispose();
}
私は、なぜこの出来事があるかわからない:
System.Net.Mail.SmtpException: Failure sending mail. ---> System.IO.IOException: The write operation failed, see inner exception. ---> System.Threading.ThreadAbortException: Thread was being aborted.
at System.Net.UnsafeNclNativeMethods.OSSOCK.send(IntPtr socketHandle, Byte* pinnedBuffer, Int32 len, SocketFlags socketFlags)
at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, SocketError& errorCode)
at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Security._SslStream.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
--- End of inner exception stack trace ---
at System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.DelegatedStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.DelegatedStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.DelegatedStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.DelegatedStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.DelegatedStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.DelegatedStream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Base64Stream.FlushInternal()
at System.Net.Base64Stream.Write(Byte[] buffer, Int32 offset, Int32 count)
at System.Net.Mime.MimePart.Send(BaseWriter writer)
at System.Net.Mime.MimeMultiPart.Send(BaseWriter writer)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
--- End of inner exception stack trace ---
at System.Net.Mail.SmtpClient.Send(MailMessage message)
これは私がメールを送信するために使用する方法です。
内部例外メッセージとは何ですか? – ChrisBint
私はあなたのコードをGMXメールサーバでテストしましたが、うまくいきます。 .NET 3.5でコンパイルし、8.53 MBのファイルを送信しました。エラーはありません。私はそれがGMailの制限かもしれないと仮定します。 (アカウントの設定でどうにか調整可能かもしれません) –
@ChrisBint内部例外スタックトレースを更新します。 – kfmlx