4

Как я могу отправить HTML-код в буфер обмена в виде расширенного текста из сценария? Моя конечная цель - создать скрипт, чтобы я мог вставить контент из исходного файла в электронное письмо, но я хочу получить общий ответ для вставки в любую программу, которая принимает форматированный текст.

Пример использования для вставки в электронную почту:

  1. Откройте исходный файл в vim
  2. Используйте команду :TOhtml для создания html-файла с подсветкой синтаксиса vim.
  3. Используйте ответ отсюда, чтобы скопировать HTML как форматированный текст
  4. Вставить в электронное письмо (это не будет написано в сценарии)

Связанный: вставка различий в Microsoft Outlook с подсветкой синтаксиса

2 ответа2

5

Linux

через этот ответ

cat text.html | xclip -t text/html

макинтош

через этот ответ

cat text.html | textutil -stdin -format html -convert rtf -stdout | pbcopy

Windows

В старых версиях Windows вы можете копировать только открытый текст (с помощью этого ответа).

type text.html | clip

В PowerShell вы можете копировать форматированный текст:

type text.html | Set-Clipboard -AsHtml

Если вы создаете C:\sandbox\pbcopy.ps1:

type $args[0] | Set-Clipboard -AsHtml

Затем вы можете включить сценарии и запустить их из любого места (cmd.exe, BAT-файлы и т.д.):

powershell C:\sandbox\pbcopy.ps1 text.html

Существует несколько различных команд Cygwin для копирования в буфер обмена Windows, и похоже, что Cygwin предоставляет xclip, так что вы можете использовать решение Linux в Windows, если у вас есть Cygwin.

0

Используйте электронную почту CSS! Используйте HTML-файл кодировки UTF8!

Запустите http (HTML-eMail.html) электронную почту из командной строки:

powershell .\mail-http.ps1

почта-http.ps1:

$time = get-date 

$from    = 'So.From@gmail.com'
$to      = 'So.To@gmail.com'
$subject = 'eMail-HTML ' + $time

$server=smtp.gmail.com;$port=587

$encoding = [System.Text.Encoding]::UTF8

$email=new-object Net.Mail.MailMessage($from, $to, $subject, $body)
$email.DeliveryNotificationOptions=[System.Net.Mail.DeliveryNotificationOptions]::Delay
$email.IsBodyHtml = $true
$email.Priority = [System.Net.Mail.MailPriority]::High

$email.BodyEncoding=$encoding

$email.Body = gc '.\HTML-eMail.html' -encoding UTF8

$smtp=new-object Net.Mail.SmtpClient($server,$port)
$smtp.EnableSSL = $true
$smtp.Timeout = 30000  #ms
$smtp.Credentials=New-Object System.Net.NetworkCredential($from, 'derParol'); 

$smtp.Send($email)

HTML-eMail.html:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">

...

</html>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .