标签: postal

如何在Razor视图中包含内联CSS样式?

我使用Postal来呈现MVC Razor视图并通过电子邮件发送它们.我有一个我专门为电子邮件视图定义的自定义CSS.目前我将它们包括在内如下:

@Styles.Render("~/Content/EmailStyles.css")
Run Code Online (Sandbox Code Playgroud)

但是,这仅包括样式表的相对链接,这在电子邮件中不起作用:

<link href="/Content/EmailStyles.css" rel="stylesheet"/>
Run Code Online (Sandbox Code Playgroud)

我希望将样式表内联,以便它在电子邮件中正常运行.在MVC视图中呈现基于文件的资源的内容的最佳方法是什么?

asp.net-mvc razor asp.net-mvc-4 postal

16
推荐指数
3
解决办法
2万
查看次数

使用邮政MVC与布局解析标题作为邮件正文

似乎当我使用Postal使用Layout发送电子邮件时,标题未被解析并包含在邮件消息中.

查看/电子邮件/ _ViewStart.cshtml

@{ Layout = "~/Views/Emails/_EmailLayout.cshtml"; }
Run Code Online (Sandbox Code Playgroud)

查看/电子邮件/ _EmailLayout.cshtml

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>ViewEmails</title>
</head>
<body>
    <div>
        @RenderBody()
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

查看/电子邮件/ ResetPassword.cshtml

To:  @ViewBag.To
From: @ViewBag.From
Subject: Reset Password
Views: Html
Run Code Online (Sandbox Code Playgroud)

查看/电子邮件/ ResetPassword.html.cshtml

Content-Type: text/html; charset=utf-8

Here is your link, etc ...
Run Code Online (Sandbox Code Playgroud)

当我收到邮件时,所有标题To,From,Subject和Views都包含在正文中.

有谁知道如何正确地做到这一点?

更新(感谢安德鲁),这工作:

查看/电子邮件/ _EmailLayout.cshtml

@RenderSection("Headers", false)
<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>ViewEmails</title>
</head>
<body>
    <div>
        @RenderBody()
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

查看/电子邮件/ ResetPassword.cshtml

@section Headers {
    To:  @ViewBag.To
    From: @ViewBag.From
    Subject: Reset …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc postal

12
推荐指数
1
解决办法
3612
查看次数

使用邮政MVC发送电子邮件时出错?

需求:

每天在特定时间(例如早上6点)动态地向所有用户发送电子邮件.

到目前为止我做了什么:

我使用Nuget的第三方库Quartz.net.

public class TaskScheduler : IJob
{
    public void Execute(IJobExecutionContext context)
    {
        try {
            UserRepository userRepo = new UserRepository();
            var users = userRepo.GetUsers();

            DashBoardRepository repo = new DashBoardRepository();
            foreach (var rec in users)
            {
                var tasks = repo.GetIncompleteTasks(rec.UserID);
                var appointments = repo.GetUpcomingAppointments(rec.UserID);

                if (tasks.Count > 0 || appointments.Count > 0)
                {
                    dynamic email = new Email("TaskEmail");
                    email.To = rec.Email;
                    email.From = "no-reply@xyz.com";
                    email.Subject = "Pending items in XYZ";
                    email.Tasks = tasks;
                    email.Appointments = appointments;
                    email.Send();
                }
            } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc quartz.net postal

7
推荐指数
1
解决办法
510
查看次数

从业务层使用邮政库

我有一个使用ASP.NET MVC3构建的网站,其分层如下:

  • ProjectName.Shared(模型+服务合同)
  • ProjectName.Infrastructure
  • ProjectName.Data
  • ProjectName.Data.Sql
  • ProjectName.Managers(业务层)
  • ProjectName.Services(WCF服务)
  • ProjectName.UI.Main(ASP.NET MVC3应用程序)

这实际上是我最近在重构之后想出的结构.不幸的是,UI和我的业务层之间没有完全分离,因此这个领域可能会使用更多的重构 - 我现在无法做到这一点,因为我的时间紧迫.

至于现在,我的客户已经请求了一些新功能,包括在发生某些事件后向用户发送电子邮件.网站目前发送电子邮件的方式是使用到目前为止表现很好的邮政图书馆.这发生在MVC Web应用程序中,这与我对新功能的情况不同...

问题:

我有这样的情况,我需要让我的业务层内的私人方法向用户发送电子邮件.我之所以无法在Action方法中执行此操作,是因为有许多代码路径最终会调用此私有方法.所以它并不是特定于一个Action方法.

建议的解决方案:

我的想法是创建一个EmailsController,我可以通过业务层内的HTTP-POST调用来调用它的方法.然后,我将传递通过Action方法的参数发送电子邮件所需的参数.

但我觉得这个解决方案有点瑕疵和黑客.所以我真的想听听一些关于如何解决这个问题的想法.

email asp.net-mvc controller asp.net-mvc-3 postal

5
推荐指数
1
解决办法
628
查看次数

什么相当于邮政中的@ Html.Raw?

我正在从服务运行邮政.我的@Message有html.@ Html.Raw不可用.当Postal运行我的模板化视图时,我获得了HtmlEncoded html.有谁知道如何解决这一问题?

c# postal

5
推荐指数
1
解决办法
861
查看次数

Hangfire后台作业仍然排队

我有一个MVC应用程序,正在尝试使用Hangfire和邮政发送电子邮件。该电子邮件必须在注册后发送。注册工作正常,但是我运行的作业仍然排队,并且我没有收到任何电子邮件。所以在我的MVC控制器中,我有以下代码:

public async Task<ActionResult> Register(RegisterViewModel model)
{
    //register correctly the user

    //I send the email
    BackgroundJob.Enqueue(() => 
        NotifyRegistration(user.Id, user.UserName, user.Email)   
    );

    ...
 }

[AutomaticRetry(Attempts = 5)]
public async Task NotifyRegistration(string userId, string username, string email)
{
    //I calculate callbackUrl

    var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails"));
    var engines = new ViewEngineCollection();
    engines.Add(new FileSystemRazorViewEngine(viewsPath));

    var emailService = new EmailService(engines);

    var emailToSend = new NewRegisteredUserEmail
    {
        To = email, UserName = username, CallbackUrl = callbackUrl 
    };

    emailService.Send(emailToSend);
}
Run Code Online (Sandbox Code Playgroud)

我无法调试NotifyRegistration方法。我不知道为什么 我正在使用邮政,所以EmailService不是我的实现。这里是我如何配置smtp服务:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network">
      <network …
Run Code Online (Sandbox Code Playgroud)

c# postal asp.net-mvc-5 hangfire

3
推荐指数
1
解决办法
3564
查看次数

使用Gmail地址与Postal发送电子邮件

我想使用我的Gmail帐户发送一封电子邮件,邮政:

dynamic email = new Email("Appointment");
email.To = "sergiotapia@outlook.com";
email.Send();
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

System.Net.Mail.SmtpException:{"SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.7.0必须首先发出STARTTLS命令.

发送这封电子邮件的任何想法我需要做什么?

这是我的web.config设置:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="asdf@adsf.ly.com">
        <network host="smtp.gmail.com" port="587" defaultCredentials="false" userName="asdf@adsf.ly" password="asdf" />
        </smtp>
    </mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)

.net c# gmail asp.net-mvc-3 postal

2
推荐指数
1
解决办法
3826
查看次数

如何在 POSTAL MVC 中而不是在 WEB.Config 中设置 SMTP 客户端

在我的项目中使用 POSTAL MVC 时遇到问题。我的托管服务公司要求我在代码中而不是在 web 配置中设置 smtp 客户端配置。

怎么做 ?

我希望有人能给我一个解决方案

谢谢你。

c# asp.net-mvc-4 postal asp.net-mail

2
推荐指数
1
解决办法
1600
查看次数

使用Azure Scheduler/Postal/MVC发送预定电子邮件

我的项目托管在Azure上,我想每天早上向忘记在我的应用程序中完成某些任务的用户发送电子邮件.

我建立了电子邮件(使用Postal发送).如果我自己运行该功能,电子邮件将按预期发送.

我已将Azure调度程序配置为运行HTTPs操作,获取方法,[ https://www.example.com/Email/EmailReminder].预定的作业报告成功,但没有电子邮件发出.

我之前没有这么做过,所以我怀疑我的函数>调度程序作业之间缺少一个链接.我已经搜索了如何设置它的代码示例,但我还没有找到解决方案.什么是调度程序期望我不给它?

public void EmailReminder()
{
     var remCheckOuts = // query code here                                
     into grouped
     select new Reminder
     {
          /// populate viewmodel 
     });    

    // send emails
    foreach (var i in remCheckOuts)
    {
                string Full = i.Full;
                string FirstName = i.FirstName;
                var CheckOutCt = i.CheckOutCt;                   

                dynamic email = new Email("emReminder");
                email.FromAdd = "test@test.com";
                email.To = "test2@test2.com";
                email.NPFirstName = NPFirstName;
                email.CheckOutCt = CheckOutCt;
                email.Send();
      } 
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc azure postal

2
推荐指数
1
解决办法
2448
查看次数

通过邮政发送电子邮件时包含徽标

在我的MVC4应用程序中,我使用邮政包发送电子邮件.

我试图通过<img>标签包含徽标,但它不起作用.

我如何加入公司徽标?

控制器动作:

   public ActionResult Index()
   {
       dynamic email = new Email("Example");
       email.To = "xxxxx@xxxxxx";
       email.FunnyLink = "haiii";
       email.Send();
       return View();
   }
Run Code Online (Sandbox Code Playgroud)

查看:

 To: @ViewBag.To From: lolcats@website.com 
 Subject: Important Message 

 <div style="background-color:aqua;">
     Hello, You wanted important web links right?
     Check out this: @ViewBag.FunnyLink

     <br />
     <img src="~/Images/Logo.png" />
 </div>
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-4 postal

1
推荐指数
1
解决办法
817
查看次数