0

MVCMailer を段階的に見ていくと、HTML で cid を使用して画像をインラインで埋め込むことができることがわかります。

https://github.com/smsohan/MvcMailer/wiki/MvcMailer-Step-by-Step-Guide

埋め込みについて説明しているコードが表示されます。

@Html.InlineImage("logo", "Company Logo")


var resources = new Dictionary<string, string>();
resources["logo"] = logoPath;
PopulateBody(mailMessage, "WelcomeMessage", resources);

私の質問は、次のようなサイト内のパスを使用するのではなく、

resources["logo"] = Server.MapPath("~/Content/images/logo.png");

十分なスペースがある Azure クラウドまたは S3 クラウドにあるイメージをどうにか取得できますか?

MVC メーラーが実行されているサーバー以外のソースから画像を取得する方法があれば教えてください。

ありがとう、ビクター

4

1 に答える 1

0

Server.MapPath(my_path) の my_path は、物理ディレクトリにマップする相対パスまたは仮想パスを指定します。Server.MapPath はローカルの FileSystemObject に関連付けられているため、その場合、ローカル Web サーバー内の場所でファイル (パラメーターとして渡す) が検索されます。詳細については、次を参照してください。

http://msdn.microsoft.com/en-us/library/ms524632(v=VS.90).aspx

したがって、画像がhttp://azure_storage_name.blob.core.windows.net/your_public_container/image_name.jpgにある場合、これはローカル ファイル システム内の場所ではないため、それを Server.MapPath() に渡すことはできません。試してみたところ、受け入れられないことがわかりました。また、いくつかの方法で微調整しようとしましたが、成功しませんでした。コード ビハインドを変更でき、URL からリソースにアクセスできる場合は機能しますが、それ以外の場合は機能しません。

于 2012-05-21T18:01:37.837 に答える