从 UITextField 文本创建 HTML 电子邮件

Creating HTML email from UITextField text

我是一名新手和业余程序员。我正在尝试为 iOS 创建一个应用程序来填充我的 UITextFields 中的文本。我有 3 个 actionField、impactField 和 result 字段。如果可能的话,我希望每个人都有自己的台词。

我看了一个类似的答案,但对我没有任何帮助。有没有人有任何教程或建议?

- (IBAction)backgroundTap: (id)sender {
    [self.actionField resignFirstResponder];
    [self.impactField resignFirstResponder];
    [self.resultField resignFirstResponder];
}

- (IBAction)sendBullet:(id)sender {
    NSString *emailTitle = @"Email";
    NSString *messageBody = @"Title";
    NSArray *toRecipients = [NSArray arrayWithObject:@"email"];

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:NO];
    [mc setToRecipients:toRecipients];

    [self presentViewController:mc animated:YES completion:NULL];

您需要做的就是从文本字段构建一个字符串:

NSString *messageBody = [NSString stringWithFormat:@"Action: %@\nImpact: %@\nResult: %@", self.actionField.text, self.impactField.text, self.resultField.text];

根据需要更新格式字符串。我在这里展示的只是一个例子。

\n 是字符串中的一个特殊值,表示 "newline"。这意味着我显示的字符串将包含三行文本。

MHinton,

在你继续之前,你应该看看 HTML 语法,那里有成千上万的教程,因为它已经存在了几十年。很容易拿起。你可以开始HERE

注意 最好在设备上测试 HTML 电子邮件,因为 MFMailComposeViewController

模拟器可能有点不稳定

其次,从文本视图或其他形式的字符串中抓取文本相当容易,同样,那里有数以千计的教程。专门针对 Obj C,您可以按如下方式进行操作:

1) 为您的文本字段创建一个插座

@interface YourViewController: UIViewController
@property (nonatomic, retain) IBOutlet UITextField *actionField
@end

2) 然后您可以在您的实现文件 (.m) 中的任何位置引用它,如下所示:

NSString *emailMessageBody = self.actionField.text;

以 HTML 格式显示电子邮件的文本

创建 HTML 格式的电子邮件相对容易,只要您花大约 15 分钟学习 HTML 语法即可。

如果你想在不同的行中插入你的 UITextFields,你实现 HTML 等同于换行符(或按回车键):<br>

因此,要传递给 MFMailComposeViewController 的示例字符串如下所示:

NSString *emailMessageBody = [NSString stringWithFormat:@"The retrieved text from actionField is : <br><strong><font color=\"red\">'%@'</font><br></strong><br> The retrieved text from impactField is : <br>%@<br> The retrieved text from resultField is : <br>%@<br>", self.actionField.text, self.impactField.text, self.resultField.text];

你的选择是无限的,只要你知道 HTML 语法。 所以这是怎么回事?

  • <br> 创建换行符
  • <strong> 创建一个粗体样式的文本并结束您放置 </strong> 在您想要粗体的最后一个单词后的格式
  • <font> 不言自明;你也必须结束这种样式格式。

你通常在 MFMailComposeViewController 中调用它,但是你必须明确地将电子邮件设置为 HTML 这样所有 HTML 标签都可以从格式中删除,所以它不会'不要将其显示为纯文本。

[mc setMessageBody:emailMessageBody isHTML:YES];

其他常用的 HTML 标签是:

  • <style> 用于格式化
  • <p> 段落
  • <h1> 对于 headers
  • <mark> 突出显示
  • <small> 小字
  • <i><em> 用于斜体或强调

更多HTML标签请参考上面的link


SWIFT 语法

 var emailMessageBody = NSString(format:"The retrieved text from actionField is : <br><strong><font color=\"red\">'%@'</font><br></strong><br> The retrieved text from impactField is : <br>%@<br> The retrieved text from resultField is : <br>%@<br>", actionField.text, impactField.text, resultField.text) as String
 mailComposerVC.setMessageBody(emailMessageBody, isHTML: true)