Получение электронных писем на хостинге Идентификатор электронной почты домена от любого пользователя, посещающего сайт - PullRequest
4 голосов
/ 17 февраля 2010

Я пытаюсь создать страницу для связи с нами, где посетитель сайта может оставить сообщение администратору сайта.

скажи, что я работаю на этом сайте www.example.com и у меня есть идентификатор contact@example.com Теперь новый посетитель посещает мой сайт и заполняет форму обратной связи. Он заполняет

ОТ - abc@yahoo.com Тема - Запрос Сообщение- мой вопрос ....

Я хочу отправить это сообщение по почте на адрес contact@example.com

И при успешной отправке почты я хочу отправить этому пользователю автоматически сгенерированную почту в качестве подтверждения.

Что мне нужно для этого сделать, мой хостинг-сервер - GoDaddy

Я пытаюсь следующий код.

    try
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress(txtEmailId.Text);
        mailMessage.To.Add(new MailAddress("contact@example.com"));
        mailMessage.Subject = txtSubject.Text;
        mailMessage.Body = txtMessage.Text;
        mailMessage.IsBodyHtml = false;
        mailMessage.Priority = MailPriority.High;
        SmtpClient sc = new SmtpClient("relay-hosting.secureserver.net");
        //sc.Credentials = new System.Net.NetworkCredential("contact@example.com", "MyPassword");
        sc.Send(mailMessage);
    }
    catch (Exception ex)
    {
        Label1.Text = "An Error has occured : "+ex.Message;
    }

Эта ошибка возникает при попытке отправить почту.

Имя почтового ящика не допускается. Сервер ответ был: извините, ваша почта была в административном порядке отказано. (# 5.7.1)

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

По вашему коду вы указываете, что поле From почтового сообщения основано на адресе электронной почты, который заполняет пользователь. Почта почтового сервера отклоняет это и разрешает только электронную почту с доменного имени example.com иливозможно имя самого сервера.Я сталкивался с этим раньше, когда ваше поле From должно быть исходным доменом сайта ...

Если вы хотите, чтобы получатель электронной почты мог ответить напрямую, используйте Поле ReplyTo вместо поля from:

MailMessage mailMessage = new MailMessage();

//try using a domain address that matches your server and/or site.
//the email address itself may also have to exist depending on the mail server.
mailMessage.From = new MailAddress("no-reply@example.com");

//set the replyto field
mailMessage.ReplyTo = new MailAddress(txtEmailId.Text);

//send the mail...   

Надеюсь, это может помочь ...

РЕДАКТИРОВАТЬ:

После того, как выотредактировал ваш вопрос, выше всё ещё актуально.Весьма вероятно, что вы не можете использовать From адрес вне домена вашего собственного сайта example.com.Если вы хотите отправить две копии запроса (одну на contact@example.com, а другую пользователю в качестве подтверждения), вам просто нужно добавить в свойство To:

MailMessage mailMessage = new MailMessage();

//try using a domain address that matches your server and/or site.
//the email address itself may also have to exist depending on the mail server.
mailMessage.From = new MailAddress("abc@example.com");

//add the contact email address to the To list
mailMessage.To.Add(new MailAddress("contact@example.com"));

//add the user email address to the To list
mailMessage.To.Add(new MailAddress(txtEmailId.Text));

//set the replyto field
mailMessage.ReplyTo = new MailAddress(txtEmailId.Text);

//send the mail...   

Если вам нужно добавить простое сообщение для письма с подтверждением пользователя, вы также можете сделать:

try
{
    MailMessage mailMessage = new MailMessage();
    mailMessage.From = new MailAddress("abc@example.com");
    mailMessage.To.Add(new MailAddress("contact@example.com"));
    mailMessage.ReplyTo = new MailAddress(txtEmailId.Text);
    mailMessage.Subject = txtSubject.Text;
    mailMessage.Body = txtMessage.Text;
    mailMessage.IsBodyHtml = false;
    mailMessage.Priority = MailPriority.High;
    SmtpClient sc = new SmtpClient("relay-hosting.secureserver.net");
    //sc.Credentials = new System.Net.NetworkCredential("contact@example.com", "MyPassword");

    //send to only the contact@example.com first
    sc.Send(mailMessage);

    mailMessage.To.Clear();
    mailMessage.To.Add(new MailAddress(txtEmailId.Text));

    //add a simple message to the user at the beginning of the body
    mailMessage.Body = "Thank you for submitting your question. The following has been submitted to contact@example.com: <br/><br/>" + mailMessage.Body;

    //send the acknowledgment message to the user
    sc.Send(mailMessage);

}
catch (Exception ex)
{
    Label1.Text = "An Error has occured : "+ex.Message;
}
0 голосов
/ 17 февраля 2010

Это, вероятно, Serverfault.com вопрос, в любом случае

вам нужно проверить эти опции

Админ -> Конфигурация -> Электронная почта Параметры -> - E-Mail Transport Method = SendEmail

ссылка 553 извините, ваша почта была отклонена в административном порядке . (# 5.7.1)

...