Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   C# gmail отправка письма, ошибка (https://forum.antichat.xyz/showthread.php?t=206923)

need_million 26.05.2010 15:48

C# gmail отправка письма, ошибка
 
Код:

        public static bool SendEmail(
        string pGmailEmail,
        string pGmailPassword,
        string pTo,
        string pSubject,
        string pBody,
        System.Web.Mail.MailFormat pFormat,
        string pAttachmentPath)
        {
            try
            {
                System.Web.Mail.MailMessage myMail = new System.Web.Mail.MailMessage();
                myMail.Fields.Add
                    ("http://schemas.microsoft.com/cdo/configuration/smtpserver",
                                  "smtp.gmail.com");
                myMail.Fields.Add
                    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport",
                                  "465");
                myMail.Fields.Add
                    ("http://schemas.microsoft.com/cdo/configuration/sendusing",
                                  "2");
                //sendusing: cdoSendUsingPort, value 2, for sending the message using
                //the network.

                //smtpauthenticate: Specifies the mechanism used when authenticating
                //to an SMTP
                //service over the network. Possible values are:
                //- cdoAnonymous, value 0. Do not authenticate.
                //- cdoBasic, value 1. Use basic clear-text authentication.
                //When using this option you have to provide the user name and password
                //through the sendusername and sendpassword fields.
                //- cdoNTLM, value 2. The current process security context is used to
                // authenticate with the service.
                myMail.Fields.Add
                ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
                //Use 0 for anonymous
                myMail.Fields.Add
                ("http://schemas.microsoft.com/cdo/configuration/sendusername",
                    pGmailEmail);
                myMail.Fields.Add
                ("http://schemas.microsoft.com/cdo/configuration/sendpassword",
                    pGmailPassword);
                myMail.Fields.Add
                ("http://schemas.microsoft.com/cdo/configuration/smtpusessl",
                    "true");
                myMail.From = pGmailEmail;
                myMail.To = pTo;
                myMail.Subject = pSubject;
                myMail.BodyFormat = pFormat;
                myMail.Body = pBody;
                //if (pAttachmentPath.Trim() != "")
                //{
                //    MailAttachment MyAttachment =
                //            new MailAttachment(pAttachmentPath);
                //    myMail.Attachments.Add(MyAttachment);
                //    myMail.Priority = System.Web.Mail.MailPriority.High;
                //}

                System.Web.Mail.SmtpMail.SmtpServer = "smtp.gmail.com:465";
                System.Web.Mail.SmtpMail.Send(myMail);
                return true;
            }
            catch (Exception ex)
            {
                throw;
            }
}

Код:

            SendEmail("nickname@gmail.com",
                            "password",
                            "nick@bk.ru",
                            "This is email subject",
                            "This is email body",
                            System.Web.Mail.MailFormat.Text,
                            "");

ошибка Не удалось отправить сообщение на SMTP-сервер. Код ошибки транспорта: 0x80040217. Отклик сервера: not available

need_million 26.05.2010 16:46

вот такой пример есть, пишет "не допустимый знак в заголовке"

Код:

            SmtpClient SmtpServer = new SmtpClient();
            SmtpServer.Credentials = new System.Net.NetworkCredential("nick@gmail.com", "passs");
            SmtpServer.Port = 587;
            SmtpServer.Host = "smtp.gmail.com";
            SmtpServer.EnableSsl = true;
            mail = new MailMessage();
            String[] addr = TextBox1.Text.Split(',');
            try
            {
                mail.From = new MailAddress("nick@gmail.com", "Developers", System.Text.Encoding.UTF8);
                Byte i;
                for( i = 0;i< addr.Length; i++)
                    mail.To.Add(addr[i]);
                mail.Subject = TextBox3.Text;
                mail.Body = TextBox4.Text;
                if(ListBox1.Items.Count != 0)
                {
                    for(i = 0;i<ListBox1.Items.Count;i++)
                    mail.Attachments.Add(new Attachment(ListBox1.Items[i].ToString()));
                }
                //LinkedResource logo = new LinkedResource(path);
                //logo.ContentId = "Logo";
                string htmlview;
                htmlview = "<html><body><table border=2><tr width=100%><td><img src=cid:Logo alt=companyname /></td><td>MY COMPANY DESCRIPTION</td></tr></table><hr/></body></html>";
                AlternateView alternateView1 = AlternateView.CreateAlternateViewFromString(htmlview + TextBox4.Text, null, MediaTypeNames.Text.Html);
                //alternateView1.LinkedResources.Add(logo);
                mail.AlternateViews.Add(alternateView1);
                mail.IsBodyHtml = true;
                mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                mail.ReplyTo = new MailAddress(TextBox1.Text);
                SmtpServer.Send(mail);
            }
            catch (Exception ex){
            MessageBox.Show(ex.ToString());
            }


eLWAux 26.05.2010 18:40

.NET учитывает имя компьютера в домене отправителя, который передается во время приветствия.
Можно попробовать указывать домен при инициализации полей Sender, From,
однако давать имя компьютеру на русском - однозначно зло.

Попробуй изменить имя компьютера с русских букв на англ.

need_million 26.05.2010 19:03

Цитата:

Попробуй изменить имя компьютера с русских букв на англ.
изменил в обоих вариантах ошибка "Не удалось отправить сообщение на SMTP-сервер. Код ошибки транспорта: 0x80040217. Отклик сервера: not available"

KATYA 26.05.2010 20:26

Попробуй порт 465 во втором примере, но там защищённое соединение и требуется проверка подлинности, а вот на других почтовиках ведь нормально отсылает?

noxjoker 26.05.2010 20:41

SSl - true
587 порт

KATYA 26.05.2010 20:42

Цитата:

Сообщение от noxjoker
SSl - true
587 порт

Этот порт есть в примере, у меня пашет :)

KATYA 26.05.2010 20:45

PHP код:

 using System.Web
using System.Net
using System.Net.Mail
using System.Net.Mime;
namespace 
qwe
{
    class 
qwer
    
{
        static 
void Main()
        {
            
//Авторизация на SMTP сервере 
            
SmtpClient Smtp = new SmtpClient("smtp.gmail.com"587);
            
Smtp.Credentials = new NetworkCredential("iuser@gmail.com""passs");
            
Smtp.EnableSsl true

            
//Формирование письма 
            
MailMessage Message = new MailMessage();
            
Message.From = new MailAddress("iuser@gmail.com");//тоже что и iuser@gmail.com
            
Message.To.Add(new MailAddress("куда"));
            
Message.Subject "tetet";
            
Message.Body "354";



            
Smtp.Send(Message);//отправка 
        
}
    }


Вот так всё пашет :) Юзай с пользой, кодер!

Даже ещё сейчас проверю разок!
Работает, если нет то не знаю в чём дело :(

KATYA 26.05.2010 20:50

Вопрос: ограничение на отпраку писем через smtp в гугле, в минуту в час с ip?

need_million 26.05.2010 20:59

Цитата:

SmtpClient SmtpServer = new SmtpClient();
SmtpServer.Credentials = new System.Net.NetworkCredential("nick@gmail.com", "passs");
SmtpServer.Port = 587;
SmtpServer.Host = "smtp.gmail.com";
SmtpServer.EnableSsl = true;
mail = new MailMessage();
String[] addr = TextBox1.Text.Split(',');
try
{
mail.From = new MailAddress("nick@gmail.com", "Developers", System.Text.Encoding.UTF8);
Byte i;
for( i = 0;i< addr.Length; i++)
mail.To.Add(addr[i]);
mail.Subject = TextBox3.Text;
mail.Body = TextBox4.Text;
if(ListBox1.Items.Count != 0)
{
for(i = 0;i<ListBox1.Items.Count;i++)
mail.Attachments.Add(new Attachment(ListBox1.Items[i].ToString()));
}
//LinkedResource logo = new LinkedResource(path);
//logo.ContentId = "Logo";
string htmlview;
htmlview = "<html><body><table border=2><tr width=100%><td><img src=cid:Logo alt=companyname /></td><td>MY COMPANY DESCRIPTION</td></tr></table><hr/></body></html>";
AlternateView alternateView1 = AlternateView.CreateAlternateViewFromString(htmlvi ew + TextBox4.Text, null, MediaTypeNames.Text.Html);
//alternateView1.LinkedResources.Add(logo);
mail.AlternateViews.Add(alternateView1);
mail.IsBodyHtml = true;
mail.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
mail.ReplyTo = new MailAddress(TextBox1.Text);
SmtpServer.Send(mail);
}
catch (Exception ex){
MessageBox.Show(ex.ToString());
}
этот пример работает только надо имя компа английсское..

а кто то знает как это обойти?


Время: 14:35