【发布时间】:2022-03-19 21:18:10
【问题描述】:
我注意到,如果我通过电子邮件发送短信,它将只允许 159 个字符。 (我认为这是由于 smtp)
我发送的一些消息长度超过 159 个字符,我可以直接发送,但我更愿意发送由换行符分隔的消息。
这是我的短信示例:
(Need Bid)Salesman: Firstname Lastname
Customer: CustFirstname CustLastname
Customer Address: 1111 TheSteetAdd St, Lockport, New York 12124
Customer Number: 111-222-3333
Apt Date/Time: 1/17/2021 5:00 PM
括号中的文本是主题行。所以这也可能改变它的总字符串数。 对于这些短信中的每一条,我还添加了“\r\n”,以便为用户创建一个不错的新行。
以下是我希望如何执行此方法的示例。我不想只是随机地刺痛,我希望它是新的线。
(1/2)
(Need Bid)Salesman: Firstname Lastname
Customer: CustFirstname CustLastname
Customer Address: 1111 TheSteetAdd St, Lockport, New York 12124
(2/2)
Customer Number: 111-222-3333
Apt Date/Time: 1/17/2021 5:00 PM
{
MailAddress from = new MailAddress("email@gmail.com", "Firstname Lastname");
MailAddress to = new MailAddress("1112223333@vtext.com", "Firstname Lastname");
MailMessage message = new MailMessage(from, to);
message.Subject = subject;
message.Body = body;
MailAddress bcc = new MailAddress("email@gmail.com");
message.Bcc.Add(bcc);
SmtpClient client = new SmtpClient("stuff", 26);
client.Credentials = CredentialCache.DefaultNetworkCredentials;
Debug.WriteLine("Sending an email message to {0} and {1}.",
to.DisplayName, message.Bcc.ToString());
var totalMessage = message.Subject + message.Body;
//See if message is longer than 159 characters, if so send in another message
if (message.Subject.Count() + message.Body.Count() > 159)
{
var splitBodyByNewLine = message.Body.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
string[] arrayOfMessages = new string[] { };
string currentString;
int totalStingCount = message.Subject.Count();
foreach (string aString in splitBodyByNewLine)
{
var tempChecker = aString.Count();
var tempCheckerBPlusS = totalStingCount + aString.Count();
if (arrayOfMessages.Length == 0)
{
if (totalStingCount + aString.Count() < 159)
{
}
}
else if (aString.Count() < 159)
{
}
}
Debug.WriteLine("");
}
try
{
client.Send(message);
}
catch (Exception ex)
{
Console.WriteLine("Exception caught in CreateBccTestMessage(): {0}",
ex.ToString());
}
}
【问题讨论】:
-
电子邮件文本中 159 个字符的限制将是一个严重的限制。我无法想象世界上有任何 smtp 服务器有这种限制。
-
想象在任何电子邮件帐户中......新电子邮件中的每个文本段落,这会很有趣。
-
SMTP 协议指定允许至少 64k 八位字节(字节)。你可以阅读它here。
-
@iPhoenix_ 不要误会我的意思,我想帮助你回答我的问题,但同时我可以看到它没有带来价值。我对您的另一个问题,在您输入的问题中,我没有看到 ## OR ?
-
@maytham-ɯɐɥʇʎɐɯ 感谢您的支持。我将它从 159 更改为 140 只是因为我必须考虑 [subject] + [currentMessageCounter](在我的示例中它是“(Need Bid)(1/2)”)。所以我只是给了自己一个安全的缓冲区(是的,140 不是确切的数字),我知道特殊字符比普通字符串字符要多于 1。我使用## 作为占位符,直到我对字符串进行分组。然后最后我在## bc SMTP 将主题与正文分开发送之前删除任何内容。 "(?