-2

ニュースレターに少し問題があります...

説明させてください:私は自分のメールと他に何もないSQLテーブルと、メールが送信された後にメールを保存するSQLテーブルを持っていますが、どういうわけかメールは送信されませんが、メールは保存されます。

それはすべてフォームビューに設定されています。

protected void btnSendNewsLetter_Click(object sender, EventArgs e)
    {
        TextBox subject = (TextBox)fvNewsletter.Row.FindControl("txtSubject");
        TextBox body = (TextBox)fvNewsletter.Row.FindControl("txtBody");

        string connection = WebConfigurationManager.ConnectionStrings["GreenCollaborationConnectionString"].ConnectionString;

        SqlConnection con = new SqlConnection(connection);

        con.Open();

        SqlCommand comm = new SqlCommand("Select Email from MailingList", con);
        SqlDataAdapter da1 = new SqlDataAdapter(comm);
        GreenDataSet ds1 = new GreenDataSet();
        da1.Fill(ds1);
        if(ds1.Tables[0].Rows.Count > 0)
        {
            for (int i = 0; i <= ds1.Tables[0].Rows.Count - 1; i++)
            {
                string email = ds1.Tables[0].Rows[i].ItemArray[0].ToString();
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.From = new MailAddress("noreply@GreenCollaboration.com", "GreenCollaboration");
                mail.To.Add(email);
                mail.Subject = subject.Text;
                mail.SubjectEncoding = System.Text.Encoding.UTF8;
                mail.BodyEncoding = System.Text.Encoding.UTF8;
                mail.IsBodyHtml = true;
                mail.Body = body.Text;
            }
        }
    }

some1が私を助けてくれることを願っています:)

4

3 に答える 3

1

次のことを試してください。

protected void btnSendNewsLetter_Click(object sender, EventArgs e)
{
    //snip

    //Create the smtp client to send the mails with.
    SmtpClient client = new SmtpClient(server);
    // Add credentials if the SMTP server requires them.
    client.Credentials = CredentialCache.DefaultNetworkCredentials;

    if(ds1.Tables[0].Rows.Count > 0)
    {
        for (int i = 0; i <= ds1.Tables[0].Rows.Count - 1; i++)
        {
            string email = ds1.Tables[0].Rows[i].ItemArray[0].ToString();
            System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
            //snip
            try 
            {
                client.Send(message);
            }
            catch (Exception ex) 
            {
                Console.WriteLine(ex.ToString());             
            }
        }
    }
}

MsdnMailMessageクラス

于 2012-11-08T16:22:22.077 に答える
0

メッセージを生成しましたが、実際に送信したことはありません。SMTPやExchangeなど、送信するメカニズムはいくつかあります

したがって、SMTP を使用する予定がある場合は、

//Somewhere on top
var server="EMAIL.CORP.COMPANY" //or "10.10.10.10"
var smtpClient= new SmtpClient(server);
smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials; //AD credentials

//In the end of your for loop
try {
    smtpClient.Send(mail);
catch (Exception ex) {
    //Handle the exception    
}
于 2012-11-08T16:26:03.463 に答える
0

ええと...次のものが単に欠けているようです:

SmtpClient client = new SmtpClient();
client.Send(message);

次の行に配置します。

mail.Body = body.Text;

次の詳細をweb.configに入れます

<system.net>
  <mailSettings>
    <smtp from="test@foo.com">
      <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" />
    </smtp>
  </mailSettings>
</system.net>

編集:メールを送信しないという差し迫った問題に対処します。

ただし、他の場所でメールをまとめて送信するように記載されているように、より堅牢な実装を行う必要があります。たとえば、大量のメール送信者の例については、このリンクを参照してください。

于 2012-11-08T16:21:21.330 に答える