دسته بندی ها
14:47 1398/07/04

ارسال ایمیل در Asp.net core

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 510     رتبه کاربر : 4
دسته بندی : Asp.net Core Asp.net Mvc

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 6870
پاسخ دهنده : saedbfd 23:24 1398/07/26

سلام

کافیه یک کلاس ایجاد کنید و کد زیر رو توش کپی کنید.

public async Task SendEmailAsync(string email, string subject, string message)
        {
            using (var Client = new SmtpClient())
            {
                var Credential = new NetworkCredential
                {
                    UserName = "UserName",
                    Password = "****"
                };
                Client.Credentials = Credential;
                Client.Host = "smtp.gmail.com";
                Client.Port = 587; // or 25  -- 587 -- 465 For Send Email
                Client.EnableSsl = true; 
                using (var emailMessage = new MailMessage())
                {
                    emailMessage.To.Add(new MailAddress(email));
                    emailMessage.From = new MailAddress("EmailAddress");
                    emailMessage.Subject = subject;
                    emailMessage.IsBodyHtml = true;
                    emailMessage.Body = message;

                    Client.Send(emailMessage);
                };
                await Task.CompletedTask;
            }
            /////////////////////////////////////////////////////////////////
        }

 

در کدهای بالا به جای UserName آدرس ایمیل تا قبل از @ رو می تونید بذارید و بقیه هم که مشخص هست.

همچنین اگر از سرویسی جز جیمیل استفاده می کنید جای Client.Host باید آدرس سرور رو بنویسید.

موفق باشید

به این پاسخ امتیاز بدهید    5
امتیاز: 1654 رتبه: 1
پاسخ دهنده : mrmehdi64 13:04 1398/08/23

سلام من برای ارسال ایمیل از کدهای زیر استفاده کردم ولی موقع ارسال ایمیل پیغام خطا میده

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

namespace LatinMedia.Core.Senders
{
    public class SendEmail
    {
        public static void Send(string to, string subject, string body)
        {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
            mail.From = new MailAddress("mrmehdi64@gmail.com", "لاتین مدیا");
            mail.To.Add(to);
            mail.Subject = subject;
            mail.Body = body;
            mail.IsBodyHtml = true;

            //System.Net.Mail.Attachment attachment;
            // attachment = new System.Net.Mail.Attachment("c:/textfile.txt");
            // mail.Attachments.Add(attachment);

            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential("mrmehdi64@gmail.com", "MyPasword");
            SmtpServer.EnableSsl = true;

            SmtpServer.Send(mail);

        }
    }
}

ول

به این پاسخ امتیاز بدهید    0
امتیاز: 20 رتبه: 36
پاسخ دهنده : pedram_khan 21:01 1398/08/23

پاسخ به mrmehdi64

توی متن خطا نوشته شده see the inner Exception

بهتره که روی گزینه View Details کلیک کنید و در پنجره باز شده inner Exception و Message رو باز کنید تا دقیقا بگه خطا از چی هست.

ولی ظاهرا متن ایمیلی که ارسال کردید فرمتش صحیح نیست.

دقیقا چه متنی رو میخواید ایمیل کنید. متن ایمیل شما باید به صورت کدهای html باشه

به این پاسخ امتیاز بدهید    1
امتیاز: 277 رتبه: 6
پاسخ دهنده : mrmehdi64 13:06 1398/08/24

 

 

 

خوب این متن خطایی که گفتید....

و چیزی که میخوام بفرستم اینکه وقتی کاربر میخواد تو سایت لاگین کنه درصورتیکه رمز عبورش رو فراموش کرده باشه از طریق ارسال ایمیل رمز عبورش رو میتونه ریست کنه

کدهای مربوط ایمیل ارسالی هم اینه:

 

 

@model LatinMedia.DataLayer.Entities.User.User
@{
    Layout = null;
}


<div style="direction: rtl;padding:20px;margin-right:40px;">
    <h2>عزیز! @(Model.FirstName + " " + Model.LastName) </h2>
    <p>
        <span>جهت بازیابی رمز عبور خود، روی لینک زیر کلیک کنید.</span>
        <br />
        <a href="https://localhost:44316/Account/ResetPassword/@Model.ActiveCode">بازیابی کلمه عبور</a>
    </p>

</div>

 

دیگه نمیدونم مشکل از کجاست؟؟؟؟

به این پاسخ امتیاز بدهید    0
امتیاز: 20 رتبه: 36
پاسخ دهنده : mghb 22:01 1398/08/24

سلام شما متن body رو کجا نوشتی باید توی کنترلر و داخل رشته ی body که نوشتی کدها رو بنویسید... الان توی این کدهایی که نوشتید متن body نیست... از رشته body عکس بگیرید و بفرستید منظورم از ویوی شما نیست....

به این پاسخ امتیاز بدهید    1
امتیاز: 27 رتبه: 26
پاسخ دهنده : hamid_b 00:40 1398/08/25

جهت ارسال ایمیل در Asp.net core یک کلاس ایجاد کنید به نام EmailSender و کدهای زیر رو توش کپی کنید

 

 public class EmailSender : IEmailSender
{
public async Task SendEmailAsync(string email, string subject, string message)
        {
            using (var Client = new SmtpClient())
            {
                var Credential = new NetworkCredential
                {
                    UserName = "UserName",
                    Password = "****"
                };
                Client.Credentials = Credential;
                Client.Host = "smtp.gmail.com";
                Client.Port = 587; // or 25  -- 587 -- 465 For Send Email
                Client.EnableSsl = true; 
                using (var emailMessage = new MailMessage())
                {
                    emailMessage.To.Add(new MailAddress(email));
                    emailMessage.From = new MailAddress("EmailAddress");
                    emailMessage.Subject = subject;
                    emailMessage.IsBodyHtml = true;
                    emailMessage.Body = message;

                    Client.Send(emailMessage);
                };
                await Task.CompletedTask;
            }
            /////////////////////////////////////////////////////////////////
        }
}

 

 

سپس یک interface ایجاد کنید و کد زیر رو توش کپی کنید

 

public interface IEmailSender
    {
        Task SendEmailAsync(string email, string subject, string htmlMessage);
    }

 

در فایل startup.cs و در متد ConfigureService برای این کلاس و اینترفیس سرویس مورد نظر رو راه اندازی کنید

 

services.AddScoped<IEmailSender, EmailSender>();

 

و در نهایت در کدهای کنترلر خودتون متن ایمیل و موضوع ایمیل و سایر مشخصات رو بنویسید تا ایمیل ارسال بشه

 

await _emailSender.SendEmailAsync(userEmail, "موضوع ایمیل در اینجا", $"<div>متن کامل ایمیل </div>");

 

 

مراحل بالا رو انجام بدید باید بتونید عمل ارسال ایمیل در Asp رو انجام بدید

موفق باشید

ویرایش شده در شنبه 25 آبان 1398 ساعت 10:42:00
به این پاسخ امتیاز بدهید    2
امتیاز: 510 رتبه: 4
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود