2017-03-21 18 views
-4

メールを送信、私はカーボンコピーを送信したいが、私は言った例外があります。私は人々のグループに電子メールを送信するためのフォームを持っている私のWebアプリケーションでは、asp.netを使用してC#の

を指定された文字列は、電子メールアドレスに必要な形式ではありません。私のコードです

protected void SendButton_Click(object sender, EventArgs e) 
{ 
    string smtpAddress = "smtp.office365.com"; 
    int portNumber = 587; 
    bool enableSSL = true; 

    string emailFrom = from.Text; 
    string password = PassTextBox.Text; 
    string emailTo = toddl.SelectedValue.ToString(); 
    string subject = subject_txt.Text; 

    string body = txtBody.Text; 

    using (MailMessage mail = new MailMessage()) 
    { 
     mail.From = new MailAddress(emailFrom); 
     mail.To.Add(emailTo); 
     mail.Subject = subject; 
     mail.Body = body; 
     MailAddress copy1 = new MailAddress(ccddl1.SelectedValue.ToString()); 
     if(copy1!=null) 
     { 
      mail.CC.Add(copy1); 
     } 
     MailAddress copy2 = new MailAddress(ccddl2.SelectedValue.ToString()); 
     if (copy2 != null) 
     { 
      mail.CC.Add(copy2); 
     } 

     mail.IsBodyHtml = true; 
     // Can set to false, if you are sending pure text. 
     if (syllabus_attach.HasFile) 
     { 
      string FileName = Path.GetFileName(syllabus_attach.PostedFile.FileName); 
      mail.Attachments.Add(new Attachment(syllabus_attach.PostedFile.InputStream, FileName)); 
     } 
     if (course_exam_attach.HasFile) 
     { 
      string FileName = Path.GetFileName(course_exam_attach.PostedFile.FileName); 
      mail.Attachments.Add(new Attachment(course_exam_attach.PostedFile.InputStream, FileName)); 
     } 
     if (answer_key_attach.HasFile) 
     { 
      string FileName = Path.GetFileName(answer_key_attach.PostedFile.FileName); 
      mail.Attachments.Add(new Attachment(answer_key_attach.PostedFile.InputStream, FileName)); 
     } 


     using (SmtpClient smtp = new SmtpClient(smtpAddress, portNumber)) 

     { 
      smtp.UseDefaultCredentials = true; 
      smtp.Credentials = new NetworkCredential(emailFrom, password); 
      smtp.EnableSsl = enableSSL; 

      smtp.Send(mail); 
     } 


     string script = "alert(\"Request Sent Successfully!\");"; 
     ScriptManager.RegisterStartupScript(this, GetType(), "ServerControlScript", script, true); 
    } 
} 
+0

例外にCCコードを変更する必要があり、そのどちらか 'ccddl1.SelectedValue.ToString()'や 'ccddl2.SelectedValueを意味し、 .ToString() 'は電子メールアドレスとして解析できませんでした。 'copy1'または' copy2'がnullであるかどうかをチェックするのではなく、 'MailAddress(string)'を呼び出す前に、これらの2つの値をチェックして有効なアドレスであることを確認する必要があります。 –

+1

エラーのようですがかなりまっすぐです。スタックオーバーフローに関する質問を投稿する前に、基本的なデバッグ*を行うことを確認してください。 – mason

答えて

0

あなたは

if(!String.IsNullOrWhitespace(ccddl1.SelectedValue.ToString()) 
{ 
    mail.CC.Add(new MailAddress(ccddl1.SelectedValue.ToString()); 
} 

if (!String.IsNullOrWhitespace(ccddl2.SelectedValue.ToString()) 
{ 
    mail.CC.Add(new MailAddress(ccddl2.SelectedValue.ToString())); 
} 
+0

はい、それはうまくいきました。ありがとうございます。 –

関連する問題