You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Outlook邮件中发送StringList并设置文本对齐与格式

Hey there! The issue you're running into is that MailItem.Body only supports plain text—so you can't get consistent alignment, font styling, or other formatting tweaks (plain text tabs also behave unpredictably across different email clients).

To fix this and get the polished look you want, switch to using MailItem.HTMLBody instead. HTML lets you control fonts, alignment, and use tables to keep your labels and values neatly aligned (way more reliable than tabs!).

Here's your modified code with proper formatting support:

procedure TForm1.Button1Click(Sender: TObject);
const
  olMailItem = 0;
var
  Outlook : OLEVariant;
  MailItem : Variant;
  HTMLBody: string;
begin
  try
    Outlook := GetActiveOleObject('Outlook.Application');
  except
    Outlook := CreateOleObject('Outlook.Application');
  end;

  try
    MailItem := Outlook.CreateItem(olMailItem);
    MailItem.Subject := 'Leavers form';
    MailItem.Recipients.Add('*******@hotmail.com');
    MailItem.CC := '******@googlemail.com';

    // Build formatted HTML body
    HTMLBody := '<html><body style="font-family: Arial, sans-serif; font-size: 10pt;">';
    HTMLBody := HTMLBody + '<p style="text-align: left;">Hi all,</p>';
    HTMLBody := HTMLBody + '<p style="text-align: left;">Please find leavers details below,</p>';
    HTMLBody := HTMLBody + '<p style="text-align: left;">Thank you,</p>';
    HTMLBody := HTMLBody + '<br>';

    // Use a table for consistent label-value alignment
    HTMLBody := HTMLBody + '<table style="border-collapse: collapse; width: 650px;">';
    // Add each form field as a table row
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Employee Name:</td><td style="padding: 4px;">' + Edit1.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Payroll Number:</td><td style="padding: 4px;">' + Edit2.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Campaign:</td><td style="padding: 4px;">' + Edit3.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Leave Date:</td><td style="padding: 4px;">' + Edit4.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Probation Period:</td><td style="padding: 4px;">' + ComboBox1.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Reason for leaving:</td><td style="padding: 4px;">' + ComboBox8.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">If other please specify:</td><td style="padding: 4px;">' + Edit7.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Would you re-employ?:</td><td style="padding: 4px;">' + ComboBox2.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">If "no" please specify reasons:</td><td style="padding: 4px;">' + Edit9.Text + '</td></tr>';
    // Fix line wrap issue for advance payment question
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Has Employee received an advance payment to recoup from final salary?:</td><td style="padding: 4px;">' + ComboBox3.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Additional details:</td><td style="padding: 4px;">' + Edit11.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Due payment in lieu of notice?:</td><td style="padding: 4px;">' + ComboBox4.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">If "yes" specify weeks (e.g 4.25):</td><td style="padding: 4px;">' + Edit13.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Holiday Entitlement to date:</td><td style="padding: 4px;">' + Edit14.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Holiday taken to date:</td><td style="padding: 4px;">' + Edit15.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Holidays to be paid/deducted:</td><td style="padding: 4px;">' + Edit16.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Has employee returned laptop?:</td><td style="padding: 4px;">' + ComboBox9.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Has employee returned pass?:</td><td style="padding: 4px;">' + ComboBox5.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Has employee returned headset?:</td><td style="padding: 4px;">' + ComboBox6.Text + '</td></tr>';
    HTMLBody := HTMLBody + '<tr><td style="padding: 4px 15px 4px 0; text-align: left; font-weight: bold;">Has employee returned locker key?:</td><td style="padding: 4px;">' + ComboBox7.Text + '</td></tr>';
    HTMLBody := HTMLBody + '</table>';
    HTMLBody := HTMLBody + '</body></html>';

    // Assign formatted HTML to the mail item
    MailItem.HTMLBody := HTMLBody;
    // Uncomment below to preview before sending
    // MailItem.Display;
    MailItem.Send;
  finally
    // Clean up OLE variants
    Outlook := Unassigned;
    MailItem := Unassigned;
  end;
end;

Key improvements made:

  1. Consistent alignment: Uses an HTML table to ensure labels and values line up perfectly, no more wonky plain-text tabs.
  2. Font control: Sets a standard sans-serif font (Arial) and 10pt size for readability across all email clients.
  3. Fix line wraps: Merged the broken advance payment question into a single row to avoid messy text splitting.
  4. Easy formatting tweaks: To center a section (like a header), just change text-align: left to text-align: center in the <p> style. You can also add colors, borders, or adjust padding by modifying the HTML styles.

内容的提问来源于stack exchange,提问作者jeffy biscuits

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:57:28