2011-10-21 17 views
2

私はASP.Netのバスケットでちょうど生まれた赤ちゃんです。私はASP.NET 4.0のWrox Beginnersを読んでいて、System.Net.Mailを使ってメールを送ることについて読んでいました。System.Net.Mailでメールを送信

protected void Page_Load(object sender, EventArgs e) 
{ 
    MailMessage myMessage = new MailMessage(); // Getting Error 
    myMessage.Subject = "Test Message"; 
    myMessage.Body = "Hello World, from Planet Wrox"; 
    myMessage.From = new MailAddress("[email protected]", "Barack Obama"); 
    myMessage.To.Add(new MailAddress("[email protected]", "George Bush")); 
    SmtpClient mySmtpClient = new SmtpClient(); 
    mySmtpClient.Send(myMessage); 
} 

このコードをページのロードイベントに書き込みました。しかし、私はいずれかいただきました問題を伝えることができ

Server Error in '/' Application.

The specified string is not in the form required for an e-mail address. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: The specified string is not in the form required for an e-mail address.

Source Error:

Line 11:  protected void Page_Load(object sender, EventArgs e) 
Line 12:  { 
Line 13:   MailMessage myMessage = new MailMessage(); 
Line 14:   myMessage.Subject = "Test Message"; 
Line 15:   myMessage.Body = "Hello World, from Planet Wrox"; 

として最初の行でエラーを取得していますか?ここで

+0

行動のこの種を促進するための私に恥が、フレーズ1「私はASP.Netバスケットに赤ちゃんを生まれています。」ちょっと面白い! –

+0

@KileyNaro:ありがとうKilet :) – Sandy

答えて

1

はあなたが必要なものがすべて含まれたクラスです。

/// <summary> 
/// Wrapper class for the System.Net.Mail objects 
/// </summary> 
public class SmtpMailMessage : IDisposable 
{ 
    #region declarations 

    MailMessage Message; 
    SmtpClient SmtpMailClient; 

    #endregion 

    #region constructors 

    /// <summary> 
    /// Default constructor for the SmtpMailMessage class 
    /// </summary> 
    public SmtpMailMessage() 
    { 
     //initialize the mail message 
     Message = new MailMessage(); 
     Message.Priority = MailPriority.Normal; 
     Message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;    
     Message.From = new MailAddress("[email protected]");   

     //initialize the smtp client 
     SmtpMailClient = new SmtpClient(); 
     SmtpMailClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
     SmtpMailClient.Host = "192.168.0.1"; 
     SmtpMailClient.Port = 25; 
    } 

    /// <summary> 
    /// Parameterized constructor for the SmtpMailMessage class. Allows for override of the default 
    /// SMTP host and port number 
    /// </summary> 
    /// <param name="HostIP">The IP address of the exchange server</param> 
    /// <param name="PortNumber">The port number for ingoing and outgoing SMTP messages</param> 
    public SmtpMailMessage(string HostIP, int PortNumber) : this() 
    { 
     //override the smtp host value 
     SmtpMailClient.Host = HostIP; 

     //override the smtp port value 
     SmtpMailClient.Port = PortNumber; 
    } 

    #endregion 

    #region subject/body 

    /// <summary> 
    /// The body content of the mail message 
    /// </summary> 
    public string Body 
    { 
     get 
     { 
      return Message.Body; 
     } 
     set 
     { 
      Message.Body = value; 
     } 
    } 

    /// <summary> 
    /// the subject of the mail message 
    /// </summary> 
    public string Subject 
    { 
     get 
     { 
      return Message.Subject; 
     } 
     set 
     { 
      Message.Subject = value; 
     } 
    } 

    #endregion 

    #region mail type 

    /// <summary> 
    /// Gets or sets a value that determines whether the mail message 
    /// should be formatted as HTML or text 
    /// </summary> 
    public bool IsHtmlMessage 
    { 
     get 
     { 
      return Message.IsBodyHtml; 
     } 
     set 
     { 
      Message.IsBodyHtml = value; 
     } 
    } 

    #endregion 

    #region sender 

    /// <summary> 
    /// Gets or sets the from address of this message 
    /// </summary> 
    public string From 
    { 
     get 
     { 
      return Message.From.Address; 
     } 
     set 
     { 
      Message.From = new MailAddress(value); 
     } 
    } 

    #endregion 

    #region recipients 

    /// <summary> 
    /// Gets the collection of recipients 
    /// </summary> 
    public MailAddressCollection To 
    { 
     get 
     { 
      return Message.To;     
     } 
    } 

    /// <summary> 
    /// Gets the collection of CC recipients 
    /// </summary> 
    public MailAddressCollection CC 
    { 
     get 
     { 
      return Message.CC; 
     } 
    } 

    /// <summary> 
    /// Gets the collection of Bcc recipients 
    /// </summary> 
    public MailAddressCollection Bcc 
    { 
     get 
     { 
      return Message.Bcc; 
     } 
    } 

    #endregion 

    #region delivery notification 

    /// <summary> 
    /// Gets or sets the delivery notification settings for this message 
    /// </summary> 
    public DeliveryNotificationOptions DeliveryNotifications 
    { 
     get 
     { 
      return Message.DeliveryNotificationOptions; 
     } 
     set 
     { 
      Message.DeliveryNotificationOptions = value; 
     } 
    } 

    #endregion 

    #region priority 

    /// <summary> 
    /// Gets or sets the Priority of this message 
    /// </summary> 
    public MailPriority PriorityLevel 
    { 
     get 
     { 
      return Message.Priority; 
     } 
     set 
     { 
      Message.Priority = value; 
     } 
    } 

    #endregion 

    #region send methods 

    /// <summary> 
    /// Sends the message anonymously (without credentials) 
    /// </summary> 
    public void Send() 
    { 
     SmtpMailClient.Send(Message); 
    } 

    /// <summary> 
    /// Sends the message with authorization from a network account 
    /// </summary> 
    /// <param name="Username">The Windows username of the authorizing user</param> 
    /// <param name="Password">The Windows password of the authorizing user</param> 
    /// <param name="Domain">The domain name of the network to which the authorizing user belongs</param> 
    public void Send(string Username, string Password, string Domain) 
    { 
     //attach a network credential to this message using the information passed into the method 
     SmtpMailClient.Credentials = new NetworkCredential(Username, Password, Domain); 

     //send the message 
     SmtpMailClient.Send(Message); 
    } 

    #endregion 

    #region IDisposable implementation 

    ~SmtpMailMessage() 
    { 
     Dispose(false); 
    } 

    public void Dispose() 
    { 
     Dispose(true);    
    } 

    protected virtual void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      if (Message != null) 
       Message.Dispose(); 
      Message = null;     
      SmtpMailClient = null; 
     } 
    } 

    #endregion   
} 
+0

おかげさまで。 – Sandy

+0

大歓迎です。 –

0

SMTP設定は、web.configファイルに正しいことを確認してください。

1

空のコンストラクタでMailMessage()を使用するには、設定ファイルのSmtpSettingsに "From"値を設定する必要があると思います。ここから:

http://msdn.microsoft.com/en-us/library/ms144707.aspx

Remarks


From is set to the value in the network element for mailSettings Element (Network Settings), if it exists.

簡単に解決策は、アドレスから取るコンストラクタを使用するようにして対処することがあります。ここから

http://msdn.microsoft.com/en-us/library/14k9fb7t.aspx

string to = "[email protected]"; 
string from = "[email protected]"; 
MailMessage message = new MailMessage(from, to); 
関連する問題