Проблема формы ASP.Net после перемещения серверов - «Ошибка отправки почты» - PullRequest
0 голосов
/ 16 марта 2012

После часов и часов головокружения и незнания ПОЧЕМУ код моего сайта работал на старом сервере, а теперь на новом сервере он просто не работает (изменен IP-адрес почтового сервера, использован адрес субдомена для сервера, измененпорты, пробовал 25, 26, 587 и все, что предлагалось администраторами сервера) Я наконец наткнулся на реальную проблему (я думаю), которая заключается в том, что хостинг требует аутентификации.

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

Это часть в регистрационном файле, которая отправляет код активации:

MailClass.MailGonder("info@mysite.com", TxtEMail.Text, "Activation", body, "info@mysite.com", "emailpassword", "mail.mysite.com", 587);

И это файл Mail_Class.cs, который обрабатывает отправку всех страниц по почте.(есть другие страницы, которые также используют это, кроме страницы регистрации):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Net;

namespace Sngl
{
public class MailClass
{
    public MailClass() { }

    public static void MailGonder(string kimden, string kime, string title, string body, string senderEmail, string senderPassword, string smtpServer, int port)
    {
        try
        {
            System.Net.Mail.MailMessage MyMailMessage = new System.Net.Mail.MailMessage(kimden, kime, title, body);
            MyMailMessage.IsBodyHtml = true;
            MyMailMessage.Priority = System.Net.Mail.MailPriority.High;
            System.Net.NetworkCredential mailAuthentication = new
            System.Net.NetworkCredential(senderEmail, senderPassword);
            System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient(smtpServer, port);
            mailClient.EnableSsl = false;
            mailClient.UseDefaultCredentials = false;
            mailClient.Credentials = mailAuthentication;
            mailClient.Send(MyMailMessage);

            PropertyClass.Result = true;

        }
        catch (Exception ex)
        {
            PropertyClass.Result = false;
            PropertyClass.Message = ex.Message;
        }
    }
}
}

Отображается сообщение об ошибке: «Ошибка отправки почты».Больше подробностей не приводится.

1 Ответ

2 голосов
/ 16 марта 2012

Ссылка , которую вы дали , должна быть для очень старой публикации, потому что в приведенном примере используются устаревшие классы .net.Я преобразовал его в c # для вас ниже, но я понятия не имею, будет ли он работать, поскольку я никогда не использовал этот материал раньше.

using System;
using System.Web.Mail;

namespace Sngl
{
    public class MailClass
    {
        public MailClass() { }

        public static void MailGonder(string kimden, string kime, string title, string body, string senderEmail, string senderPassword, string smtpServer, int port)
        {
            try
            {
                var message = new MailMessage
                {
                    From = kimden,
                    To = kime,
                    Subject = title,
                    Body = body
                };
                message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"] = smtpServer;
                message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"] = port;
                message.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 1;
                message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
                message.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = senderEmail;
                message.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = senderPassword;
                message.Fields["http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"] = 60;

                SmtpMail.SmtpServer = smtpServer;
                SmtpMail.Send(message);

                PropertyClass.Result = true;
            }
            catch (Exception ex)
            {
                PropertyClass.Result = false;
                PropertyClass.Message = ex.Message;
                throw;
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...