Проблемы с разрешением при попытке отправить электронную почту через SMTP со страницы ASP.NET - PullRequest
0 голосов
/ 04 мая 2011

Я делал это раньше без каких-либо проблем, но теперь я не знаю, что не так.У меня есть веб-страница с кнопкой для электронной почты, с которой я хочу отправить некоторые данные на адреса электронной почты.

Я попросил нашу веб-хостинговую компанию сообщить подробности о сервере, и я получил ответ:

"You can use the following details for mail.

Incoming mail server: mail.ourSite.com Outgoing mail server: mail.ourSite.com

Username and password are the email address and password associated with the email address.
"

Я не уверен насчет последней строки, но я создал новый адрес электронной почты в панели управления веб-хостинга.

Я использую код:

// instantiate a new mail definition and load an html
// template into a string which I replace values in
// then the rest of the code below
md.Subject = String.Format("{0} {1} {2}", emailSubject, firstName, lastName);

MailMessage msg = md.CreateMailMessage(emailAddress, replacements, emailBody, new Control());
md.IsBodyHtml = true;
SmtpClient sc = new SmtpClient(emailServer);            
sc.Credentials = new NetworkCredential(emailUsername, emailPassword);
    try
    {
        sc.Send(msg);
    }

emailServer - mail.ourSite.com (фиктивное значение в этом сообщении) emailUsername - адрес электронной почты, который я создал в панели управления emailPassword - пароль для адреса электронной почты выше

У меня ошибка в том, что когда я отправляю электронные письма на другие домены, кроме нашегоЯ получаю

"Bad sequence of commands. The server response was: This mail server requires authentication when attempting to send to a non-local e-mail address. Please check your mail client settings or contact your administrator to verify that the domain or address is defined for this server."

Когда я отправляю электронное письмо на адрес нашего хоста, он работает нормально.

Поддержка не очень поддерживает, поэтому я спрашиваю, что вы думаете, проблема можетбыть?Мне кажется странным, что я использую пароль для созданного мной адреса электронной почты, должен ли он быть таким?

Ответы [ 3 ]

0 голосов
/ 04 мая 2011

Попробуйте это ..

    msg.UseDefaultCredentials = false;
    NetworkCredential MyCredential = new NetworkCredential("Email", "Password");
    msg.Credentials = MyCredential;
0 голосов
/ 04 мая 2011

вот код для отправки почты .. надеюсь, я вам помогу ..

using System.Web.Mail;
using System;
public class MailSender
{
    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;
    }
}
}
0 голосов
/ 04 мая 2011

Я думаю, что вы используете неправильный адрес электронной почты для NetworkCredential.Это должен быть тот адрес для вашей учетной записи электронной почты, который вы получили от того, который предоставляет emailServer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...