使用C#中的smtp发送邮件问题 [英] Mail Sending problem using smtp in C#

查看:123
本文介绍了使用C#中的smtp发送邮件问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在我的网站上完成了电子邮件通知系统,用户在截止日期前收到电子邮件..

但是我遇到了一个问题,即第一个用户正在接收给他的电子邮件,但第二个用户是收到2封邮件,一封是给他的,另一封是以前用户同样的方式,对于第三位用户,他会收到3封邮件等等......

所以对于1位用户来说它会完美但是当用户增加它导致问题..

任何人都可以帮助我在下面的代码中找到错误,因为我无法弄清楚代码有什么问题...







  public   partial   class  Default2:System.Web.UI.Page 
{
dbconnection db = new dbconnection();
SqlDataReader dr;
字符串 senderAddress = 字符串 .Empty;
字符串 receiveraddress = 字符串 .Empty;
字符串 emailSubject = string .Empty;
字符串 emailMessageText = 字符串 .Empty;
MailMessage mail = new MailMessage();
SmtpClient client = new SmtpClient( smtp .gmail.com 587 );
int Count = 0 ;
受保护 void Button1_Click( object sender,EventArgs e)
{
db.CheckStatus();

DateTime ti = DateTime.Now;
string format = dd-MM- YYYY;

string cmd = 选择书中的电子邮件,姓名,bname,book.stuid = student.enrollid和book.duedate =(' + ti.ToString(format)+ ');

dr = db.RetriveData(cmd); // 这完美无缺

while (dr.read())
{

Count ++;

senderAddress = mymail@gmail.com;
receiveraddress = dr [ 0 ]。toString();
emailSubject = Book Duedate Reminder;
emailMessageText = 亲爱的先生 + dr [ 1 ]。toString()+ 。今天是书 + dr [ 2 ]。toString()+ 。所以请返回图书馆,否则你必须支付罚款以便延迟归还。谢谢。;

mail.From = new MailAddress(senderAddress, LibraryAdmin,System.Text.Encoding.UTF8);
mail.To.Add( new MailAddress(receiveraddress));
mail.Subject = emailSubject;
mail.Body = emailMessageText;

client.UseDefaultCredentials = false ;
client.Credentials = new NetworkCredential( mymail@gmail.com mypwd);
client.EnableSsl = true ;
client.Send(mail);

Label1.Text = Mail Sent + Convert.ToString(Count );


TextBox1.Text + = dr [ 0 ]。toString()+ + dr [ 1 ]。toString()+ + dr [ 2 ]。toString()+ \ n; // 此处也显示完美


}
}





[edit]已添加代码块 - OriginalGriff [/ edit]

解决方案

尝试为每个用户创建一封新邮件,而不是重复使用旧邮件:

 ... 
while (dr.read())
{
mail = new MailMessage(); // 添加此行
...


 MailMessage emailmsg =  new  MailMessage(); 
emailmsg.From = new MailAddress( abc@inc.com abc);
emailmsg.To.Add( new MailAddress( cdf@inc.com cdf));
emailmsg.Subject = 关于某些信息;
emailmsg.Body = stest bodcy;
emailmsg.IsBodyHtml = true ;
emailmsg.Priority = MailPriority.Normal;
SmtpClient mailclient = new SmtpClient( smtp .bizmail.yahoo.com);
mailclient.Credentials = new System.Net.NetworkCredential( careers@inc.com 123);

mailclient.Send(emailmsg);


请参阅以下链接

http://www.codeproject.com/Members/Member-9297053#_comments [ ^ ]


I have done email notification system in my website in which user get email when they reach deadline..
but i encountered one problem that first user is receiving email that intended for him but second user is receiving 2 mails one that intended for him and another one is of previous user same way for 3rd user he will receive 3 mails and so on...
so for 1 user it will work perfect but when user increase it cause problem..
can anyone help me for finding error in below code because i'm unable to figure out what is wrong with code...



public partial class Default2 : System.Web.UI.Page
{
 dbconnection db = new dbconnection();
    SqlDataReader dr;
    String senderAddress = string.Empty;
    String receiveraddress = string.Empty;
    String emailSubject = string.Empty;
    String emailMessageText = string.Empty;
    MailMessage mail = new MailMessage();
    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
    int Count = 0;
 protected void  Button1_Click(object sender, EventArgs e)
 {
           db.CheckStatus();

        DateTime ti= DateTime.Now;
        string format = "dd-MM-yyyy";
       
        string cmd = "select email,name,bname from book,student where book.stuid=student.enrollid AND book.duedate=('" + ti.ToString(format) + "')";    
       
 dr = db.RetriveData(cmd);                      //this works perfect
        
        while(dr.read())
        {

            Count++;
           
            senderAddress = "mymail@gmail.com";
            receiveraddress = dr[0].toString();
            emailSubject = " Book Duedate Reminder";
            emailMessageText = "Dear Mr " + dr[1].toString() + ". Today is duedate for book " + dr[2].toString() + ". So please return back to library otherwise you have to pay fine for late returning.Thank You.";

            mail.From = new MailAddress(senderAddress, "LibraryAdmin", System.Text.Encoding.UTF8);
            mail.To.Add(new MailAddress(receiveraddress));
            mail.Subject = emailSubject;
            mail.Body = emailMessageText;
           
            client.UseDefaultCredentials = false;
            client.Credentials = new NetworkCredential("mymail@gmail.com", "mypwd");
            client.EnableSsl = true;
            client.Send(mail);
           
            Label1.Text = "Mail Sent " + Convert.ToString(Count);


            TextBox1.Text += dr[0].toString() + "  " + dr[1].toString() + "  " + dr[2].toString() + "\n";           //here also it shows perfect 

            
        }
   }



[edit]Code block added - OriginalGriff[/edit]

解决方案

Try creating a new mail message for each user instead of reusing the old one:

...
        while(dr.read())
        {
           mail = new MailMessage(); // add this line
...


MailMessage emailmsg = new MailMessage();
        emailmsg.From = new MailAddress("abc@inc.com", "abc");
        emailmsg.To.Add(new MailAddress("cdf@inc.com", "cdf"));
        emailmsg.Subject = "Regarding Some information";
        emailmsg.Body = "stest bodcy";
        emailmsg.IsBodyHtml = true;
        emailmsg.Priority = MailPriority.Normal;
        SmtpClient mailclient = new SmtpClient("smtp.bizmail.yahoo.com");
        mailclient.Credentials = new System.Net.NetworkCredential("careers@inc.com", "123");
                
        mailclient.Send(emailmsg);


see the following link
http://www.codeproject.com/Members/Member-9297053#_comments[^]


这篇关于使用C#中的smtp发送邮件问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆