2012-07-28 23 views
12

C#でasp.netプロジェクトを使用して自分のコンピュータ(localhost)から電子メールを送信することはできますか? 最後にプロジェクトをウェブサーバーにアップロードするつもりですが、アップロードする前にテストしたいと思っています。電子メールasp.netを送信するC#

準備が整ったソースコードを見つけて、それらをlocalhostで実行しようとしましたが、いずれもうまくいきません。たとえば このコード:

、どのようにasp.netのC#を使用して電子メールを送信するには?いくつかのサーバー構成をセットアップする必要がありますか?

+0

Gmail、Hotmailなどを使用してメールを送信できます。 –

+0

あなたのコードを教えてください。 –

+0

私はこの1つを使用します。http://smtp4dev.codeplex.com/ –

答えて

11

Asp.Netからの電子メールを送信する:上記

MailMessage objMail = new MailMessage("Sending From", "Sending To","Email Subject", "Email Body"); 
    NetworkCredential objNC = new NetworkCredential("Sender Email","Sender Password"); 
    SmtpClient objsmtp = new SmtpClient("smtp.live.com", 587); // for hotmail 
    objsmtp.EnableSsl = true; 
    objsmtp.Credentials = objNC; 
    objsmtp.Send(objMail); 
+0

ありがとう、それは動作します!しかし、GmailやHotmailを使いたくない場合はどうすればいいですか?私はいくつかの会社のサービス、例えばwww.mycompany.comを使いたいと思う。サーバー構成は必要ですか? smtpホストとポートを知っていれば十分ですか? – Nurlan

+2

@NurlanKenzhebekov私は決してサービスを使用しません。電子メールを送信するのは簡単なプロセスです。任意のサービスを使用している場合、会社は電子メールドメインを提供します。私は電子メールを送信するためにsmtpを使用する必要があると思います。そのようなサーバーの設定は必要ありません。 –

7

Gmailアカウントをお持ちの場合は、あなたがSystem.Net.Mail名前空間で見つかったC#クラスライブラリを経由してASP.NETからの電子メールを送信することができ、電子メールに

smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(username,passwordd); 
smtpClient.EnableSsl = true; 
smtpClient.Send(mailMessage); 
+0

ありがとう、それは動作します!しかし、GmailやHotmailを使いたくない場合はどうすればいいですか?私はいくつかの会社のサービス、例えばwww.mycompany.comを使いたいと思う。サーバー構成は必要ですか? smtpホストとポートを知っていれば十分ですか? – Nurlan

2

を送信するためにGoogleのSMTPを使用することができます。電子メールを送信するときの主なクラスであるSmtpClientクラスを見てください。

コード例in Scott Gu's BlogまたはMSDN page of SmtpClientにコード例があります。

また、SMTPサーバーが稼働している必要があります。開発をターゲットとするメールサーバーSMTP4Devを使用することをお勧めできます。セットアップは不要です。

+0

ありがとう、それは動作します!しかし、GmailやHotmailを使いたくない場合はどうすればいいですか?私はいくつかの会社のサービス、例えばwww.mycompany.comを使いたいと思う。サーバー構成は必要ですか? smtpホストとポートを知っていれば十分ですか? – Nurlan

5

あなたのコードは正常に動作する必要がありますが、(任意のコードベースのSMTP構成の代替として)あなたのweb.configファイルに以下を追加する必要があります。

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network"> 
     <network host="your.smtpserver.com" port="25" userName="smtpusername" password="smtppassword" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 

あなたは(私は自分のPOP3/SMTP電子メールの詳細を使用)、リモートSMTPサーバーへのアクセス権を持っていない場合は、お近くのIISインスタンスにSMTPサーバーを設定することができますが、中に実行できます中継に関する問題(ほとんどのISPの消費者IPアドレスはブラックリストに記載されているため)。

良い代替、あなたはSMTPサーバへのアクセスを持っていない場合は、代わりに上記の次の設定を使用することです:

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="SpecifiedPickupDirectory"> 
      <specifiedPickupDirectory pickupDirectoryLocation="C:\mail"/> 
     </smtp> 
    </mailSettings> 
    </system.net> 

これは、電子メールのハードディスクのコピーを作成し、そのかなり便利です。上記で指定したディレクトリを作成する必要があります。そうしないと、電子メールを送信しようとするとエラーが発生します。

これらの詳細は、作成したSmtpClientオブジェクトのプロパティを設定することで、他の回答ごとにコードで設定できますが、データソースから情報を取得したり、情報が動的でない限り、余分なコーディング、.Netは既にあなたのためにこれを行います。

1
Create class name SMTP.cs then 

using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Net.Mail; 
using System.Net.Mime; 
using System.Net; 



/// <summary> 
/// Summary description for SMTP 
/// </summary> 
public class SMTP 
{ 
    private SmtpClient smtp; 

    private static string _smtpIp; 
    public static string smtpIp 
    { 
     get 
     { 
      if (string.IsNullOrEmpty(_smtpIp)) 
       _smtpIp = System.Configuration.ConfigurationManager.AppSettings["smtpIp"]; 

      return _smtpIp; 

     } 
    } 


    public SMTP() 
    { 
     smtp = new SmtpClient(smtpIp); 
    } 

    public string Send(string From, string Alias, string To, string Subject, string Body, string Image) 
    { 
     try 
     { 
      MailMessage m = new MailMessage("\"" + Alias + "\" <" + From + ">", To); 
      m.Subject = Subject; 
      m.Priority = MailPriority.Normal; 

      AlternateView av1 = AlternateView.CreateAlternateViewFromString(Body, System.Text.Encoding.UTF8, MediaTypeNames.Text.Html); 

      if (!string.IsNullOrEmpty(Image)) 
      { 
       string path = HttpContext.Current.Server.MapPath(Image); 
       LinkedResource logo = new LinkedResource(path, MediaTypeNames.Image.Gif); 
       logo.ContentId = "Logo"; 
       av1.LinkedResources.Add(logo); 
      } 

      m.AlternateViews.Add(av1); 
      m.IsBodyHtml = true; 

      smtp.Send(m); 
     } 
     catch (Exception e) 
     { 
      return e.Message; 
     } 

     return "sucsess"; 
    } 
} 

then 

on aspx page 

protected void lblSubmit_Click(object sender, EventArgs e) 
    { 
     //HttpContext.Current.Response.ContentType = "text/plain"; 
     //Guid guid = Guid.NewGuid(); 
     string EmailMessage = "<html>" + 
             "<head>" + 
              "<meta http-equiv=Content-Type content=\"text/html; charset=utf-8\">" + 
             "</head>" + 
             "<body style=\"text-align:left;direction:ltr;font-family:Arial;\" >" + 
             "<style>a{color:#0375b7;} a:hover, a:active {color: #FF7B0C;}</style>" + 
               "<img src=\"" width=\"190px\" height= \"103px\"/><br/><br/>" + 
               "<p>Name: " + nameID.Value + ",<br/><br/>" + 
               "<p>Email: " + EmailID.Value + ",<br/><br/>" + 
                "<p>Comments: " + commentsID.Text + "<br/><br/>" + 
              // "Welcome to the Test local updates service!<br/>Before we can begin sending you updates, we need you to verify your address by clicking on the link below.<br/>" + 
               //"<a href=\""></a><br/><br/>" + 

               //"We look forward to keeping you informed of the latest and greatest events happening in your area.<br/>" + 
               //"If you have any questions, bug reports, ideas, or just want to talk, please contact us at <br/><br/>" + 
               //"Enjoy! <br/>" + commentsID.Text + "<br/>" + 

               //"Test<br/><a href=\"">www.Test.com</a></p>" + 
             "</body>" + 
            "</html>"; 

     lblThank.Text = "Thank you for contact us."; 
     // string Body = commentsID.Text; 
     SMTP smtp = new SMTP(); 
     string FromEmail = System.Configuration.ConfigurationManager.AppSettings["FromEmail"]; 
     string mailReturn = smtp.Send(EmailID.Value, "", FromEmail, "Contact Us Email", EmailMessage, string.Empty); 
     //HttpContext.Current.Response.Write("true"); 
     nameID.Value = ""; 
     EmailID.Value = ""; 
     commentsID.Text = ""; 
    } 
0

メールを添付ファイルaspを使用して送信します。あなたがGmailやHotmailのを使用しない場合(ビデオ付き)ステップによって完全なチュートリアルのステップのためのネットC#

public void Send(string from, string to, string Message, string subject, string host, int port, string password) 
    { 
     MailMessage email = new MailMessage(); 
     email.From = new MailAddress(from); 
     email.Subject = subject; 
     email.Body = Message; 
     SmtpClient smtp = new SmtpClient(host, port); 
     smtp.UseDefaultCredentials = false; 
     NetworkCredential nc = new NetworkCredential(txtFrom.Text.Trim(), password); 
     smtp.Credentials = nc; 
     smtp.EnableSsl = true; 
     email.IsBodyHtml = true; 

     email.To.Add(to); 

     string fileName = ""; 
     if (FileUpload1.PostedFile != null) 
     { 
      HttpPostedFile attchment = FileUpload1.PostedFile; 
      int FileLength = attchment.ContentLength; 
      if (FileLength > 0) 
      { 
       fileName = Path.GetFileName(FileUpload1.PostedFile.FileName); 
       FileUpload1.PostedFile.SaveAs(Path.Combine(Server.MapPath("~/EmailAttachment"), fileName)); 
       Attachment attachment = new Attachment(Path.Combine(Server.MapPath("~/EmailAttachment"), fileName)); 
       email.Attachments.Add(attachment); 
      }    
     } 
     smtp.Send(email); 

    } 

以下 http://dotnetawesome.blogspot.in/2013/09/send-email-with-attachment-using-cnet.html

0

を訪問するには、あなたのためのソリューションです:

SmtpClient smtpClient = new SmtpClient("mail.MyWebsiteDomainName.com", 25); 

smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "myIDPassword"); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.EnableSsl = true; 
MailMessage mail = new MailMessage(); 


//Setting From , To and CC 
mail.From = new MailAddress("[email protected]", "MyWeb Site"); 
mail.To.Add(new MailAddress("[email protected]")); 
mail.CC.Add(new MailAddress("[email protected]")); 


smtpClient.Send(mail); 

希望を助けてください:)

0

Server.mappathは存在しません。サーバーオブジェクトはありません。

関連する問題