0

テンプレートNewsletterTemplate.aspxファイルに基づいてメールマガジンを送信する必要があります。

ArticleIDと言語をNewsletterTemplate.aspxファイルに渡す必要があります。このファイルはフォルダ「_admin」の下にあります。

何らかの理由で次 のエラーが発生System.ArgumentException: Illegal characters in path.し、そこからQueryString部分を削除してURLもエラーは発生しませんが、記事を抽出できません

以下はコード例です。この点で助けていただければ幸いです

String to, subject, message;
bool isHtml;
isHtml = true;
to = txtEmail.Text;
subject = txtEmailSubject.Text;

ListDictionary replacements = new ListDictionary();
string MessageBody = String.Empty;
string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;

//String TemplatePath = "\_admin\NewsletterTemplate.aspx?ArticleID=" + ddArticleList.SelectedItem.Value.ToString() + "&Language=1";

using (StreamReader sr = new StreamReader(filePath + @"\_admin\NewsletterTemplate.aspx?ArticleID=" + ddArticleList.SelectedItem.Value.ToString() + "&Language=1"))
{
    MessageBody = sr.ReadToEnd();
}
MailDefinition mailDef = new MailDefinition();
MailMessage msgHtml = mailDef.CreateMailMessage(to, replacements, MessageBody, new System.Web.UI.Control());
message = msgHtml.Body.ToString();
//send Email
Helper.SendEmailNewsletter(to, subject, message, isHtml);
4

1 に答える 1

2

StreamReaderコンストラクターは、URLアドレスではなく、ファイル名が渡されることを想定しています。ファイル名にクエリ文字列パラメータを含めることはできません。

クエリ文字列パラメータを渡したい場合は、WebClientクラスを使用してHTTPリクエストをWebフォームに送信できます。

using (var client = new WebClient())
{
    MessageBody = client.DownloadString("http://example.com/NewsletterTemplate.aspx?ArticleID=" + HttpUtility.UrlEncode(ddArticleList.SelectedItem.Value.ToString()) + "&Language=1");
}
于 2012-10-04T11:42:23.160 に答える