从mvc3发送短信时,换行符丢失

时间:2013-03-25 12:01:57

标签: asp.net-mvc sms line-breaks

由于某些原因,从MVC发送短信时线路中断,无法正常工作。

我正在使用像

这样的代码

Constants.cs

 public struct SmsBody
    {
     public const string SMSPostResume=
"[ORG_NAME]"+
"[CONTACT_NUMBER]"+
"[ORG_NAME]"+
"[CONTACT_PERSON]"+
"[EMAIL]"+
"[MOBILE_NUMBER]";
  }

然后我在控制器上调用这些变量,如

SmsHelper.Sendsms(
            Constants.SmsSender.UserId,
            Constants.SmsSender.Password,
            Constants.SmsBody.SMSPostResume
            .Replace("[NAME],",candidate.Name)
            .Replace("[EMAIL],",candidate.Email) etc......

我的问题是,当我收到短信时,所有内容都是相同的。没有间距。

我的输出

Dearxxxxyyy@gmail.com0000000000 [QUALIFICATION] [FUNCTION] [DESIGNNATION] [PRESENT_SALARY] [LOCATION] [DOB] [TOTAL_EXPERIENCE] [GENDER]。

如何在这些之间留出空间?任何人都知道帮助我...

2 个答案:

答案 0 :(得分:1)

将字符串部分放在不同的行上,并将它们连接起来不是换行符......部件将完全相继结束。你应该尝试在你希望换行的每个地方放一个\n(换行符转义序列):

public const string SMSPostResume=
    "[ORG_NAME]\n"+
    "[CONTACT_NUMBER]\n"+
    "[ORG_NAME]\n"+
    "[CONTACT_PERSON]\n"+
    "[EMAIL]\n"+
    "[MOBILE_NUMBER]\n";

同样是基于@ finman 的评论的说明:

  

可能 \ r \ n 取决于服务,而不是 \ n ,但

所以你应该查看一个可以工作的API文档。

还有另一个错误:你试图在字符串常量的末尾匹配,,原始的常量没有...

SmsHelper.Sendsms(
        Constants.SmsSender.UserId,
        Constants.SmsSender.Password,
        Constants.SmsBody.SMSPostResume
        .Replace("[NAME],",candidate.Name) // <- this line!
        .Replace("[EMAIL],",candidate.Email) // <- this line!

您应该重写要包含的格式字符串,或者重写以排除,

SmsHelper.Sendsms(
        Constants.SmsSender.UserId,
        Constants.SmsSender.Password,
        Constants.SmsBody.SMSPostResume
        .Replace("[NAME]",candidate.Name) // <- no "," this time
        .Replace("[EMAIL]",candidate.Email) // <- no "," this time
        //...etc

答案 1 :(得分:1)

public const string SMSPostResume=
"[ORG_NAME]"+
"\r[CONTACT_NUMBER]"+
"\r[ORG_NAME]"+
"\r[CONTACT_PERSON]"+
"\r[EMAIL]"+
"\r[MOBILE_NUMBER]";

另外,

Replace("[NAME],",candidate.Name)
你知道在[NAME]之后你想要逗号吗?如果它不在字符串中,请不要尝试替换它。