Skip to content

Instantly share code, notes, and snippets.

View doc.md

オンラインショップから送信されるメールの技術的な問題点とその改善方法についてお伝えさせてください。 お問い合わせフォームに「※メールが届かないというお問い合わせが増えております」という注意が書かれていますが、この原因とその改善方法についてです。 こちらのお問い合わせはカスタマーサポートのご担当者様宛てに届くかと思いますが、オンラインショップのご担当者様へ共有いただければ幸いです。

シグマオンラインショップから配信されるメールにはSPF (Sender Policy Framework), DKIM (Domain Keys Identifier Mail) のいずれにも準拠していないため、Gmailなど一般的なメールサービスで迷惑メール・フィッシングメールとして認識されるリスクが高まっています。 その結果として、迷惑メールとして処理されメールの受信に気付かず不達と報告されるケースが増えていると推察されます。

実際に、私もオンラインショップに登録して注文しましたが登録完了以降のメールは迷惑メールとして処理されていたことを確認しております。

SPFとDKIMは、いずれも送信元のメールアドレスが確かにそのアドレスの所有者であることを確認する技術です。

View jwe.rb
#!/usr/bin/env ruby
require 'openssl'
require 'jwe'
require 'jwt'
require 'json'
private_key = OpenSSL::PKey::RSA.new(File.read('/Users/aereal/devel/src/github.com/aereal/playground-jwt/internal/key/test-private.pem'))
payload = { name: 'aereal' }
results = []
View twitter-yomiage.js
const speak = (body) => {
const synth = window.speechSynthesis;
const allVoices = synth.getVoices();
const jaVoices = allVoices.filter(v=> v.lang === 'ja-JP');
const voice = jaVoices[0];
if (!voice) {
throw new Error('voice not found');
}
const utter = new SpeechSynthesisUtterance(body);
View kiryuha.rb
#!/usr/bin/env ruby
class KiryuAnazu
def 破?
true
end
end
def 桐!
KiryuAnazu.new
View update-issue-refs.rb
#!/usr/bin/env ruby
repo = ENV['REPO']
puts ARGF.read.strip.gsub(/(\s+|\A)#(\d+)\b/m) {|m| "#{$1}#{repo}##{$2}" }
View merge-tsconfig.js
#!/usr/bin/env node
const isScalar = (v) => {
return !(v === null || v === undefined || typeof v === 'object');
};
const mergeObject = (a, b) => {
const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
const accum = {};
for (const k of keys) {
View schema.json
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "configuration",
"properties": {
"ADDR": {
"type": "string"
},
"DSN": {
@aereal
aereal / generator_quiz.js
Last active Oct 19, 2018 — forked from hakobe/generator_quiz.js
oopsを表示させずにhelloのみを表示させる方法を答えよ
View generator_quiz.js
function* hello() {
try {
while(true) {
yield 9
yield 3
yield 2
}
} catch(e) {
console.log('oops')
} finally {
View merge-anylint-json.js
const { rules: eslintRules } = require('./.eslintrc.js');
const tslintConfig = require('./tslint.json');
const { rules: tslintRules } = tslintConfig;
console.log(
JSON.stringify(
{
...tslintConfig,
rules: {
View gomuyo.js
(() => {
const submitBtn = document.querySelector('input[type=submit]');
let startedAt;
const flash = (ts) => {
if (!startedAt) startedAt = ts;
const elapsed = ts - startedAt;
if (elapsed > 100) {
const e = new MouseEvent('click', {
view: window,
bubbles: true,