>  기사  >  백엔드 개발  >  .net은 어떻게 이메일을 보내나요?

.net은 어떻게 이메일을 보내나요?

零下一度
零下一度원래의
2017-06-23 16:14:582487검색

문서 디렉터리

  • 소개

  • IEmailSender

    • ISmtpEmailSender

    • NullEmailSender

  • 구성

  • MailKit 통합

    • 설치

    • 통합

    • Usage

    • Customization

Introduction

이메일 보내기는 거의 모든 애플리케이션에서 요구되는 매우 일반적인 작업입니다. Abp는 단순히 이메일을 보내기 위한 기본 프레임워크를 제공하고 이에 대한 이메일 서비스 구성을 분리합니다.

IEmailSender

상세한 내용을 알지 못해도 간단하게 이메일을 보낼 수 있는 서비스입니다. 사용법은 다음과 같습니다.

public class TaskManager : IDomainService
{private readonly IEmailSender _emailSender;    public TaskManager(IEmailSender emailSender)
    {
        _emailSender = emailSender;
    }public void Assign(Task task, Person person)
    {//Assign task to the persontask.AssignedTo = person;//Send a notification email        _emailSender.Send(
            to: person.EmailAddress,
            subject: "You have a new task!",
            body: $"A new task is assigned for you: <b>{task.Title}</b>",
            isBodyHtml: true);}
}

우리는 간단히 IEmailSender를 삽입하고 Send 메소드를 사용합니다. MailMessage 개체를 허용할 수 있는 오버로드를 포함한 버전(.net 코어에는 SmtpClient 및 MailMessage가 포함되어 있지 않으므로 .net 코어에서는 사용할 수 없음)

ISmtpEmailSender

IEmailSender를 확장하고 BuildClient 메서드를 추가하여 SmtpClient를 생성하는 ISmtpEmailSender도 있습니다. 그러면 SmtpClient를 직접 사용할 수 있습니다(.net 코어에는 SmtpClient가 포함되어 있지 않기 때문에 .net 코어에서는 사용할 수 없습니다). 및 메일 메시지). 대부분의 경우 ISmtpEmailSender를 사용하면 충분합니다.

NullEmailSender

NullEmailSender는 IEmailSender의 Null 개체 디자인 패턴을 구현한 것이며 단위 테스트 및 속성 종속성 주입에 사용할 수 있습니다.

Configuration

이메일 전송은 설정 관리 시스템을 사용하여 이메일 전송 구성을 읽습니다. 모든 설정의 이름은 Abp.Net.Mail.EmailSettingNames 클래스에 상수 형식으로 정의됩니다. 다음은 해당 값과 설명입니다.

  • Abp.Net.Mail.DefaultFromAddress: 기본 이메일 발신자의 주소입니다(위 예 참조).

  • Abp.Net.Mail.DefaultFromDisplayName: 기본 이메일 발신자 표시 이름입니다(위의 예와 유사).

  • Abp.Net.Mail.Smtp.Host: SMTP 서버의 IP 또는 도메인 이름(기본값은 127.0.0.1).

  • Abp.Net.Mail.Smtp.Port: SMTP 서버의 포트입니다(기본값은 25).

  • Abp.Net.Mail.Smtp.UserName: SMTP 서버에 인증이 필요할 때 제공해야 하는 사용자 이름입니다.

  • Abp.Net.Mail.Smtp.Password: SMTP 서버에서 인증이 필요할 때 제공해야 하는 비밀번호입니다.

  • Abp.Net.Mail.Smtp.Domain: SMTP 서버에서 인증이 필요할 때 제공해야 하는 도메인 이름입니다.

  • Abp.Net.Mail.Smtp.EnableSsl: SMTP 서버에서 SSL 연결을 사용해야 하는지(true) 또는 아닌지(false)를 나타냅니다(기본값은 false).

  • Abp.Net.Mail.Smtp.UseDefaultCredentials: True이면 제공된 사용자 및 비밀번호 대신 기본 자격 증명을 사용합니다(기본값은 true).

Integrated MailKit

.net 코어는 표준 System.Net.Mail.SmtpClient를 지원하지 않으므로 이메일을 보내려면 타사 공급자가 필요합니다. 다행히 MailKit은 기본 Smtpclient에 적합합니다. 대신 Microsoft에서는 그 사용을 권장합니다.

Abp.MailKit 패키지는 Abp의 이메일 전송 시스템에 우아하게 통합되어 있으므로 이전과 마찬가지로 MailKit을 통해 IEmailSender를 계속 사용할 수 있습니다.

Installation

먼저 프로젝트에 Abp.MailKit 패키지를 설치합니다.

Install-Package Abp.MailKit

Integration

모듈에 AbpMailKitModule 종속성을 추가합니다.

[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{//...}

사용법

좋아요를 눌러도 됩니다 앞서 설명한 IEmailSender는 Abp.MailKit 패키지가 MailKit 구현을 등록하기 때문입니다. 또한 위에 정의된 구성을 사용합니다.

Customization

MailKit의 SmtpClient를 생성할 때 추가 구성이나 사용자 정의가 있을 수 있습니다. 이때 IMailKitSmtpBuilder 인터페이스 등록을 사용자 정의 구현으로 바꿀 수 있지만 DefaultMailKitSmtpBuilder를 상속하면 더 간단해질 수 있습니다. 예를 들어 모든 SSL 연결에 대한 자격 증명을 제공하려는 경우 다음과 같이 ConfigureClient 메서드를 재정의할 수 있습니다.

public class MyMailKitSmtpBuilder : DefaultMailKitSmtpBuilder{public MyMailKitSmtpBuilder(ISmtpEmailSenderConfiguration smtpEmailSenderConfiguration) 
        : base(smtpEmailSenderConfiguration)
    {
    }protected override void ConfigureClient(SmtpClient client)
    {client.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;        base.ConfigureClient(client);
    }
}

그런 다음 인터페이스 구현의 모듈 PreInitialize 메서드에서 IMailKitStmpBuilder를 위의 구현으로 바꿉니다. :

[DependsOn(typeof(AbpMailKitModule))]public class MyProjectModule : AbpModule
{public override void PreInitialize()
    {        Configuration.ReplaceService<IMailKitSmtpBuilder, MyMailKitSmtpBuilder>();}//...}

(ReplaceService의 확장 메서드가 이 네임스페이스에 정의되어 있으므로 "using Abp.Configuration.Startup;" 문을 추가해야 합니다).

위 내용은 .net은 어떻게 이메일을 보내나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.