【问题标题】:url does not show up in text messageurl 不显示在短信中
【发布时间】:2015-08-06 16:41:13
【问题描述】:

我正在使用 C# asp.net 获取从查询字符串传递的值,并使用它们发送带有手机号码的电子邮件,以便该电子邮件会导致将文本消息发送到该手机。前任。 9772565555@vtext.com。电子邮件消息作为文本消息可以很好地到达,但在电子邮件正文中它会在消息末尾截断 url。我确定我犯了某种语法错误。这是代码

    string phone = Request["phone"].ToString();
    string item = Request["item"].ToString();
            if (phone != null && phone != "")
            {
                try
                {
                    MailMessage mailMessage = new MailMessage();
                    mailMessage.To.Add(phone + "@vtext.com");
                    mailMessage.From = new MailAddress("no-reply@mydomain.com");
                    mailMessage.Subject = "Your Item"
                    mailMessage.Body = "Hello. Click the link http://mydomain/order.aspx?order=" + phone + item;
                    SmtpClient smtpClient = new SmtpClient("localhost", 25);
                    smtpClient.Send(mailMessage);
                    Response.Write("<div style='font-size:36px'>E-mail sent!</div>");
                }
                catch (Exception ex)
                {
                    Response.Write("<div style='font-size:36px'>Could not send the e-mail - error: " + ex.Message + "</div>");
                }
            }

【问题讨论】:

  • 您是否尝试抄送至普通电子邮件帐户以确认邮件正文“如预期”?
  • URL 的哪一部分被截断了?根据他们的文档,Vtext 有 160 个字符的限制。
  • 我认为 VText 会在 140 个字符后切断。
  • 我试过了,我收到了电子邮件,即使没有 html 标签,链接文本也会显示出来,并且它是可点击的,并且可以正常工作。不知何故,我认为 ?在 url 中可能会导致 android 或 iphone 无法使其可点击的问题。或者是一个奇怪的语法错误
  • 链接前大约有 120 个字符。有趣的部分是它直接在链接处切断它,而不是在它的中途。所以它说点击链接,但在那之后什么都没有显示,后面的内容只有一个 url,没有别的。所以它出于某种原因不喜欢这个网址

标签: c# asp.net


【解决方案1】:

为了让其他人更容易通过这个线程,这里是根据上述 ragerory 和 Icemanmind 的建议的答案。

检查最终消息长度是否超过允许的字符限制。在这种情况下,大约 120 个字符。有很多选择可以解决这个问题,但我将提到两个可能会让您领先一步。

(1) 停止发送消息(脏方法)

Const int maxLength = 120;


string messageText = "1234";

Boolean sendMessage = SendMessage(messageText, maxLength);
if (!sendMessage) MessageBox.Show("Could not send message. Character limit exceeded","Error");

Boolean SendMessage(string messageText, int messageCharLimit);
{
    if (messageText.Length() > messageCharLimit)
        return false;

    //TO DO - SEND MESSAGE
    return true;
}

(2) 将消息分成块并作为多条消息发送(摘自 SLaks 在Split String into smaller Strings by length variable 上给出的答案)

public static IEnumerable<string> SplitByLength(this string str, int maxLength) {
for (int index = 0; index < str.Length; index += maxLength) {
    yield return str.Substring(index, Math.Min(maxLength, str.Length - index));
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    相关资源
    最近更新 更多