自己写的一个基于SMTP邮件发送程序,能发送出去,被接受服务器拒绝,是什么原因?发给hotmail的服务器,被认为是垃圾邮件,而发给其他的邮件服务器直接被拒绝.这个消息是通过hotmail给[email protected]发送时返回的:您好。我是EQMAIL邮件投递程序。
很抱歉,我无法完成您发往以下地址的信件的投递。原因如下:
<[email protected]>:
--127.0.0.1 failed after I sent the message.
Remote host said: 550 Error: Message content rejected而用[email protected]给自己发一封直接就收不到!肯定不是延迟的原因!发送邮件代码如下:
MailMessage mail = new MailMessage();
mail.From = this.txtFrom.Text.Trim();
mail.To = this.txtTo.Text.Trim();
mail.Subject = this.txtSubject.Text.Trim();
mail.Body = this.txtContents.Text.Trim();
mail.BodyFormat  = MailFormat.Text;SmtpMail.Send(mail);
请高手指点!!

解决方案 »

  1.   

    有的邮件服务器是需要身份验证的,不是你想发就发的
    .net里面我不是很熟,具体我不知道怎么操作了!
      

  2.   

    多半是encoding的错误。你查一下程序,有没有设置encoding。
      

  3.   

    问题在于,现在一般的服务器接受的邮件都需要签名,你通过smtp发的邮件没有设置好。回头设一下就好了。
      

  4.   

    我是用Socket写的SMTP,
    现在的SMTP服务器都要先发用户名密码后才可以发邮件的。
    先发AUTH LOGIN\r\n
    再发用户名的base64码\r\n
    再发密码的base64码\r\n
      

  5.   

    to leojay(leojay):能否给几行代码?
      

  6.   

    代码片段:
    public override bool Login( string strUserName, string strPassword )
    {
    Send("AUTH LOGIN\r\n");
    if ( !IsReplyOK(Receive()) )
    {
    Console.WriteLine( "AUTH LOGIN error!!" );
    return false;
    }
    Send( Convert.ToBase64String(Encoding.ASCII.GetBytes(strUserName)) + "\r\n" );
    if ( !IsReplyOK(Receive()) )
    {
    Console.WriteLine( "AUTH LOGIN error!!" );
    return false;
    }
    Send( Convert.ToBase64String(Encoding.ASCII.GetBytes(strPassword)) + "\r\n" );
    if ( !IsReplyOK(Receive()) )
    {
    Console.WriteLine( "AUTH LOGIN error!!" );
    return false;
    }
    return true;
    }