0

スペイン語のWebサイト(ASP.Net MVC3)に次のフォーム要素があります(もちろん切り捨てられます)

<label for="RazonSocial">Raz&oacute;n Social</label>
<input type="text" id="RazonSocial" name="RazonSocial" class="span12"  value=""/>
<label class="radio" for="razon_social_emp">Empresa
    <input type="radio" name="Razon_Social" id="razon_social_emp" value="Empresa" />
</label>
<label class="radio" for="razon_social_pf">Persona F&iacute;sica
    <input type="radio" name="Razon_Social" id="razon_social_pf" value="Persona Física" />
</label>

今、私はこのモデルを使用してこれらの値を HTML メールで送信しています: (もちろん切り捨てられます)

public class RegistrationEmailModel
{
    public string RazonSocial { get; set; }

    public string Razon_Social { get; set; }
}

これは電子メール ビューです: (もちろん省略されています)

@model MyNamespace.Models.RegistrationEmailModel
<html>
    <head>
        <style type="text/css">
            body { font-family:"Lucida Grande",verdana,arial,helvetica,sans-serif; font-size:11px;}
            .h3 {color:#CC6600; font-weight: bold; font-size: 14px;}
            .header { margin-top: 10px; margin-bottom: 5px; text-align: left; border-bottom: 1px solid #C6600; }
            .p10 { font-size 11px; margin-top: 3px; margin-bottom: 3px;}
            .rt {text-align: right; width: 25%; }
        </style>
    </head>
    <body>
        <table width="660px" border="0" cellpadding="0" cellspacing="0" class="style1">
            <tr>
                <td class="rt">
                    <span class="p10">Razón Social:&nbsp;</span>
                </td>
                <td>
                    <span class="p10"><b>@Model.RazonSocial</b></span>
                </td>
            </tr>
            <tr>
                <td class="rt">
                    <span class="p10">Tipo de Raz&oacute;n Social:&nbsp;</span>
                </td>
                <td>
                    <span class="p10"><b>@RazonSocial</b></span>
                </td>
            </tr>
        </table>
    </body>
</html>

私が抱えている問題は、Razon_Social ラジオ ボタンの値がアクセント記号付きのメールに表示されないことです。それを変換して、アクセント付きの文字を電子メールで適切に送信するにはどうすればよいですか?

編集: RenderPartialViewToString() 関数は次のとおりです。

public static string RenderPartialViewToString(Controller controller, string viewName, object model)
{
    controller.ViewData.Model = model;
    try
    {
        using (StringWriter sw = new StringWriter())
        {
            ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);

            return sw.GetStringBuilder().ToString();
        }
    }
    catch (Exception ex)
    {
        return ex.ToString();
    }
}
4

2 に答える 2

0

最終的に ActionMailer.Net ( http://geeksharp.com/2011/01/26/actionmailer-net-email-templates-for-the-mvc-crowd/ ) を使用し、問題を置き換える OnMailSending() ハンドラーを作成しました。キャラクター。他のキャラクターが問題を引き起こすかどうかはわかりませんが、少なくとも今のところは機能します. 監視を続けます。

私のMailControllerのOnMailSending()ハンドラ:

protected override void OnMailSending(MailSendingContext context)
{
    for (var i = 0; i < context.Mail.AlternateViews.Count; i++)
    {
        var av = context.Mail.AlternateViews[i];
        if (av.ContentType.MediaType == MediaTypeNames.Text.Html)
        {
            av.ContentStream.Position = 0;
            var content = new StreamReader(av.ContentStream).ReadToEnd();
            content = content.Replace("F?sica", "Fí­sica");
            context.Mail.AlternateViews[i] = AlternateView.CreateAlternateViewFromString(content, av.ContentType);
        }
    }            
    base.OnMailSending(context);
}
于 2013-09-27T20:10:26.933 に答える