기술나눔

.net C# NetEase 163 사서함을 사용하여 이메일 전송 기능을 구현하는 smtp 서비스 구축

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

기능 설명: 이메일 확인을 사용하여 사용자 등록 활성화 및 비밀번호 검색을 실현합니다. 사서함은 NetEase 163을 SMTP 서버로 선택합니다.

실제 테스트 상황: 유형 1: 대부분의 서버 운영자의 포트 25는 기본적으로 차단되어 있습니다. 운영자에게 문의하여 포트 25를 차단 해제할 수 있습니다. 차단을 해제한 후 포트 25를 사용할 수 있습니다. 두 번째 유형: 465 및 587 암호화 포트를 사용합니다. 테스트 후 587 포트가 전송에 실패하고 "전송 연결에서 데이터를 읽을 수 없습니다"를 반환하므로 여기서는 465 포트 구성만 수행됩니다. 아래에는 두 가지 성공 사례의 코드가 나와 있습니다. 실제 상황에 따라 선택하세요.

인터넷 정보를 통해 알리바바와 QQ 메일함의 587번 포트도 전송에 실패했다는 사실을 알게 되었고, 현재 넷이즈, 알리바바, QQ 3대 메이저 사업자의 stmp 서비스 포트 587번이 실패한 것으로 알려져 있습니다.

1단계: smtp 서비스를 시작합니다. NetEase 메일함 [설정]에 로그인 - 왼쪽 메뉴에서 [POP3/SMTP/IMAP]을 찾아 서비스를 활성화하고 인증 비밀번호를 받으세요(참고: 코드의 비밀번호에 인증 비밀번호를 사용하세요).그림과 같이 설정하세요.

2단계: 서버 방화벽 스택 규칙을 설정하고 포트 465를 추가합니다.

3단계: 코드.

Send25는 포트 25에서 이메일을 보내는 기능을 테스트하는 방법입니다. System.Net.Mail을 사용하는 클래스 라이브러리

공개 무효 Send25()
        {

//this.SmtpHost //smtp 서버 주소를 지정합니다.

//this.SmtpPort //smtp 서버 포트

//this.FromEmailAddress //이메일을 보낼 이메일 주소

//this.FormEmailPassword //이메일 발송을 위한 이메일 비밀번호, 인증코드는 여기에 사용됩니다

//this.ToList //이메일 수신을 위한 이메일 주소. 쉼표로 구분하여 모음일 수 있음


//System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;//클릭 가능
SmtpClient smtp = new SmtpClient(); //SmtpClient 인스턴스화
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //smtp의 아웃바운드 모드를 네트워크로 설정합니다.
smtp.EnableSsl = false; //smtp 서버가 SSL 암호화를 활성화하는지 여부
smtp.Host = this.SmtpHost; //smtp 서버 주소를 지정하세요.
smtp.Port = this.SmtpPort; //smtp 서버의 포트를 지정합니다. 기본값은 25입니다. 기본 포트를 사용하는 경우 생략 가능합니다.
smtp.UseDefaultCredentials = true; //SMTP 서버에서 신원 인증이 필요하지 않은 경우에는 다음 방법을 사용하십시오. 그러나 현재는 기본적으로 인증이 필요하지 않습니다.
//smtp.EnableSsl = false;
smtp.Credentials = new NetworkCredential(this.FromEmailAddress, this.FormEmailPassword) //인증이 필요한 경우 다음 방법을 사용하세요.

MailMessage mm = new MailMessage(); //메일 클래스 인스턴스화
mm.Priority = MailPriority.Normal; //이메일의 우선순위는 낮음, 보통, 높음으로 구분됩니다. 일반적으로 보통을 사용할 수 있습니다.
mm.From = new MailAddress(this.FromEmailAddress, "관리자", Encoding.GetEncoding(936));

//받는 사람
if (!string.IsNullOrEmpty(this.ToList))
mm.To.Add(this.ToList);
//참조인
if (!string.IsNullOrEmpty(this.CCList))
mm.CC.Add(이 CC리스트);
//CC
if (!string.IsNullOrEmpty(this.BccList))
mm.Bcc.Add(이 Bcc목록);

mm.Subject = this.Subject; //이메일 제목;
mm.SubjectEncoding = Encoding.GetEncoding(936); //이것은 매우 중요합니다. 이메일 제목에 중국어가 포함되어 있으면 여기에 지정해야 합니다. 그렇지 않으면 상대방이 잘못된 문자를 받을 가능성이 높습니다.
mm.IsBodyHtml = this.IsBodyHtml; //이메일 본문이 HTML 형식인지 여부
mm.BodyEncoding = Encoding.GetEncoding(936); //이메일 본문의 인코딩이 잘못 설정되어 수신자에게 잘못된 문자가 표시됩니다.
mm.Body = this.Body; //이메일 텍스트;
//메일 첨부
if (this.AttachmentList != null && this.AttachmentList.Count > 0)
            {
foreach (첨부파일 attachment in this.AttachmentList)
                {
mm.첨부 파일.첨부 파일 추가;
                }
            }
smtp.보내기(mm);

        }

Send465는 포트 465에서 이메일을 보내는 기능을 테스트하는 방법입니다. System.Web.Mail을 사용하는 클래스 라이브러리

공개 bool Send465()
        {
// 메일 제목
System.Web.Mail.MailMessage mmsg = 새로운 System.Web.Mail.MailMessage();
//메일 제목
mmsg.Subject = "제목";
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
//이메일 텍스트
mmsg.Body = "텍스트";

//텍스트 인코딩
mmsg.BodyEncoding = 인코딩.UTF8;
//우선 사항
mmsg.우선순위 = System.Web.Mail.MailPriority.Normal;
//보내는 사람의 이메일 주소
mmsg.From = 이메일;
//받는 사람의 받은 편지함 주소
mmsg.To = 이메일;

mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//사용자 이름
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", 이메일);
//비밀번호(인증코드)
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", Emailpwd);
//포트
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", 포트);
//ssl 여부
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl",true);
//SMTP 서버
System.Web.Mail.SmtpMail.SmtpServer = 호스트;
노력하다
            {
System.Web.Mail.SmtpMail.Send(mmsg);
참을 반환합니다.
            }
catch (예외 예)
            {
거짓을 반환합니다.
            }
        }