HTMLメール制作
各メーラーのCSS対応状況
CSS Support Guide for Email Clients | Campaign Monitor
https://www.campaignmonitor.com/css/
- oulookにおいてはheightが効かない、marginも要素によっては効かない、疑似要素やposition、floatなどももちろん使えない、という状況なので、テーブルコーディングでの(場合によってはspacerを使ったり)レイアウト調整が必要
- 制約が多めなことをあらかじめディレクターさん、デザイナーさんにわかってもらう必要あり
表示確認はlitmus.comを活用する
Litmus: Email Marketing, Email Design & Email Testing Tools
https://litmus.com/
こちらで様々なメーラーでの表示をエミュレートできる。(無料体験期間は7日間)
また、コーディングを始める前にこちらのサイトを参考にして
作業対象となるメーラーを絞ってしまったほうが良い。
コーディングのポイント
- 基本は安全を期して、tableコーディング
- CSSはインラインで書かないと読めないメーラーが多い
- 実際のインライン化はgulpで自動化する
- メディアクエリはhtmlの中のstyleタグ内に!important付きで記述
- その他のスタイルはインラインで書かれているため
-
https://litmus.com/ で表示確認しながら作業をすすめる
Gulpタスク
import gulp from 'gulp';
import plumber from 'gulp-plumber';
import stylus from 'gulp-stylus';
import pug from 'gulp-pug';
import inlineCss from 'gulp-inline-css';
import runSequence from 'run-sequence';
import browserSync from 'browser-sync';
import rename from 'gulp-rename';
import autoprefixer from "autoprefixer";
import postcss from "gulp-postcss";
import paths from '../config';
gulp.task('server', () => {
browserSync({
server: {
baseDir: paths.dist_dir,
},
open: 'external',
online: true
})
});
gulp.task('pug', () => {
return gulp.src(paths.pug_src)
.pipe(plumber())
.pipe(pug({
pretty: true
}))
.pipe(gulp.dest(paths.pug_dist));
});
gulp.task('stylus', () => {
return gulp.src(paths.stylus_src)
.pipe(plumber())
.pipe(stylus({
'include css': true
}
))
.pipe(postcss([
autoprefixer({
remove: false,
"browsers": ["last 4 versions"]
})
]))
.on('error', function(err) {
console.log(err.message);
})
.pipe(rename({
basename: 'style',
}))
.pipe(gulp.dest(paths.pug_dist));
});
gulp.task('inlineCss', () => {
return gulp.src(paths.html_src)
.pipe(plumber())
.pipe(inlineCss())
.pipe(gulp.dest(paths.html_dist))
.pipe(browserSync.stream());
});
gulp.task('htmlMailBuild', () => {
runSequence(['pug', 'stylus', 'inlineCss']);
});
gulp.task('default', ['htmlMailBuild', 'server'], () => {
gulp.watch(paths.pug_src, ['htmlMailBuild']);
gulp.watch(paths.stylus_src, ['htmlMailBuild']);
gulp.watch(paths.img, ['imagecopy']);
});
- 実際のインライン化はgulpで自動化する
- その他のスタイルはインラインで書かれているため
import gulp from 'gulp';
import plumber from 'gulp-plumber';
import stylus from 'gulp-stylus';
import pug from 'gulp-pug';
import inlineCss from 'gulp-inline-css';
import runSequence from 'run-sequence';
import browserSync from 'browser-sync';
import rename from 'gulp-rename';
import autoprefixer from "autoprefixer";
import postcss from "gulp-postcss";
import paths from '../config';
gulp.task('server', () => {
browserSync({
server: {
baseDir: paths.dist_dir,
},
open: 'external',
online: true
})
});
gulp.task('pug', () => {
return gulp.src(paths.pug_src)
.pipe(plumber())
.pipe(pug({
pretty: true
}))
.pipe(gulp.dest(paths.pug_dist));
});
gulp.task('stylus', () => {
return gulp.src(paths.stylus_src)
.pipe(plumber())
.pipe(stylus({
'include css': true
}
))
.pipe(postcss([
autoprefixer({
remove: false,
"browsers": ["last 4 versions"]
})
]))
.on('error', function(err) {
console.log(err.message);
})
.pipe(rename({
basename: 'style',
}))
.pipe(gulp.dest(paths.pug_dist));
});
gulp.task('inlineCss', () => {
return gulp.src(paths.html_src)
.pipe(plumber())
.pipe(inlineCss())
.pipe(gulp.dest(paths.html_dist))
.pipe(browserSync.stream());
});
gulp.task('htmlMailBuild', () => {
runSequence(['pug', 'stylus', 'inlineCss']);
});
gulp.task('default', ['htmlMailBuild', 'server'], () => {
gulp.watch(paths.pug_src, ['htmlMailBuild']);
gulp.watch(paths.stylus_src, ['htmlMailBuild']);
gulp.watch(paths.img, ['imagecopy']);
});
Author And Source
この問題について(HTMLメール制作), 我々は、より多くの情報をここで見つけました https://qiita.com/hokuto/items/84cba1789dadab04a102著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .